Docker Container работает. Но страница не работает в URL-адресе локального хоста (Страница не отправляет никаких данных) - PullRequest
0 голосов
/ 10 октября 2019

Я новичок в Docker и Python. Я создал простое приложение на Python, используя Flask. Я хотел бы запустить его в контейнере Docker. Контейнер Docker показывает, что он работает. Однако когда я получаю доступ к URL, я получаю localhostне отправил никаких данных.

Docker-контейнер ls показывает, что мой контейнер работает на локальном хосте и порт № 8081

app.py

from flask import Flask, redirect, url_for, request



app = Flask(__name__)


 @app.route("/hello", methods=["GET","POST"])
 def hello():
     return "Hello World!"

 if __name__ == '__main__':
     app.run(debug=True, port=8081,host='0.0.0.0')

Dockerfile

FROM python:2.7

ADD app.py /

RUN pip install flask

EXPOSE 8081 

CMD ["flask", "run", "--host=0.0.0.0"]

CMD ["python", "app.py", "--host=0.0.0.0"]

Когда я запускаю тот же app.py в моей локальной среде. Я получаю нужные данные по локальному URL. Может ли кто-нибудь направить меня в правильном направлении?

Изображение помечено dockerimage:latest, и я запускаю его с помощью:

docker run -it -p 8081:8081 dockerimage

И проверка контейнера с помощью docker container ls показывает:

0.0.0.0:8081->8081/tcp

1 Ответ

0 голосов
/ 10 октября 2019

В вашем Dockerfile и скрипте Flask все выглядит нормально, но я предложу две вещи.

  • Обновите базовый образ до python:3.7, когда 2.7 достигнет конца своей жизни.
  • Удалите CMD ["flask", "run", "--host=0.0.0.0"], так как в Dockerfile есть только один CMD.
FROM python:3.7.4-alpine3.10 
RUN pip install flask
ADD app.py /
EXPOSE 8081 
CMD ["python", "app.py", "--host=0.0.0.0"]

Теперь запустите контейнер

docker run -it --name my_app --rm -p 8081:8081 dockerimage

Откройте браузер и нажмите

http://localhost:8081/hello

или

docker exec -it my_app ash -c "apk add --no-cache curl && curl localhost:8081/hello"

Один из перечисленных вариантов должен работать.

Если вторая команда работает, значит, что-то не так с конфигурацией хоста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...