Docker Flask, застрял на "Ожидание ответа от localhost" - PullRequest
1 голос
/ 21 марта 2020

Я пытаюсь запустить тест Flask в Docker, но по какой-то причине я не могу подключиться к нему с хост-компьютера, состав файлов:

pyweb/
 |app.py
 |Dockerfile
 |___app/
     |__init__.py

Содержимое файлов : Dockerfile:

FROM python:2.7
COPY . /pyweb
WORKDIR /pyweb
RUN pip install flask
RUN export FLASK_APP=app.py
ENTRYPOINT ["python"]
CMD ["app.py"]

app.py:

from flask import Flask
from app import app 

app / init .py:

from flask import Flask

app = Flask(__name__)


@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"

app.run(host='0.0.0.0')

После запуска docker файл и запуск контейнера с docker run -d -p 5000:5000, ответ

* Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

Но я не могу подключиться с хост-машины, он не отвечает

1 Ответ

1 голос
/ 21 марта 2020

Хорошо, у меня была такая же проблема во время интервью, которое длилось чуть больше года go, и оно до сих пор меня озадачивает.

Я не знаю, почему он не работает должным образом при запуске приложения flask с app.run().

Каким-то образом он работает нормально при запуске приложения с командной строкой flask напрямую.

Файл Docker будет выглядеть так:

FROM python:2.7
COPY . /pyweb
WORKDIR /pyweb
RUN pip install flask
ENV FLASK_APP=app.py
CMD ["flask", "run", "--host", "0.0.0.0"]

И вы можете удалить app.run(host='0.0.0.0') из файла __init__.py.

Я, вероятно, потрачу немного время спустя, пытаясь понять, почему ваша оригинальная реализация не работает, как ожидалось. Я не знаю много о flask, но я не вижу ничего плохого в вашем коде.

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