J'ai créé une image Docker d'une application Flask exécutant le code suivant sur un serveur EC2:
Serving Flask app "app" (lazy loading) Environment: production Debug mode: off Running on http://127.0.0.1:5000/
Le résultat semble fonctionner lorsque le serveur retourne:
docker build -t app . docker run -80:80 app .
Comment puis-je accéder à la direction http://127.0.0.1:5000/
sur le serveur EC2, ou changer la direction pour la voir?
De plus, l'image Docker est censée fonctionner sur le port 80, mais je ne vois pas quel rôle ce port joue sur le processus.
Je suis " Un moyen simple de déployer des modèles d'apprentissage automatique dans le cloud " .
3 Réponses :
Mettez à jour votre Docker Exécuter ou ajouter un autre cartographie de port I.E. P>
ou p>
docker exécuté -p 5000: 5000 app. code> p>
docker exécuté -p 80:80 -P 5000: 5000 app. code> p>
Tout d'abord, le serveur python doit fonctionner sur 0.0.0.0. Sinon, le serveur flask n'acceptera aucune connexion de l'extérieur.
Et si vous le déployez sur une instance EC2, vous aurez probablement besoin d'un équilibrage de charge élastique pour exposer ou d'une adresse IP publique. Avec ELB, vous pouvez afficher l'application flask du 80 au port 5000.
Et n'oubliez jamais de régler -p 5000: 5000. Sinon, vous n'exposez jamais ce port.
Attention: si vous utilisez une adresse IP publique, définissez correctement vos groupes de sécurité, avec les ports et l'adresse IP avec les CIDR. Sinon, votre machine sera piratée.
J'ai l'image en cours d'exécution sur http://0.0.0.0:5000
maintenant. Mais je continue de ne rien voir. Lorsque j'entre dans l'adresse DNS publique, la connexion est refusée, j'ai ouvert le port 80 de mon instance comme il est expliqué dans le tutoriel. Dois-je rediriger le port 5000 vers le 80, ou peut-être exposer le port 5000 aussi? J'ai essayé l'ELB mais cela ne semble pas fonctionner.
Avez-vous changé le mappage de port que dans la définition du docker? Vous devez régler -p 5000: 5000. Autre chose, vous devrez exposer ce port dans le groupe de sécurité pour le faire fonctionner. Et dans le coude, vous devez mettre le groupe de sécurité ouvert sur le vpc.
J'ai compris que je devais ajouter à mon application flask le port et l'hôte. Remplacez ceci:
if __name__ == '__main__': app.run(host= '0.0.0.0',port=80)
par ceci:
if __name__ == '__main__': app.run()