Построение Docker образа приложения Python Flask показывает пустой маршрут конечной точки REST - PullRequest
0 голосов
/ 19 января 2020

Я использую docker для создания flask релакс-проекта, но когда я запустил docker, URL показывает пустую страницу.

Я новичок ie с docker, мне нужно какое-то руководство.

Я подозреваю, что файл Docker не очень хорошо указывает на app.py, который, наконец, запускает проект. Ниже приведена структура моего проекта:

project/
     app/
        movie/
          movies.py
     utils/
        tasks.py
     app.py
     requirements.txt

Вот так выглядит мой app.py файл:

from app import app


@app.route('/', methods=['GET'])
def index():
    return 'Hello World'


if __name__ == '__main__':
    app.run(port=5000, debug=True)

Тогда это мой Dockefile:

FROM alpine:latest

MAINTAINER huxyy

RUN apk add --no-cache python3-dev \
    && pip3 install --upgrade pip

WORKDIR /app

COPY . /app

RUN pip3 --no-cache-dir install -r requirements.txt

EXPOSE 5000

#ENTRYPOINT ["python3"]
#
#CMD ["app.py"]

# Run app.py when the container launches
COPY app.py /app
CMD python3 app.py

Итак, я сначала запустил команду сборки:

docker build -t flaskapp:latest .

Затем, после запуска образа:

docker run -it flaskapp

Итак, я не знаю, что неправильно, но мне любезно нужно руководство

1 Ответ

1 голос
/ 19 января 2020

Полагаю, проблема в том, что порт 5000, к которому вы пытаетесь получить доступ к приложению, фактически не публикуется, несмотря на использование EXPOSE в Dockerfile.

Команда EXPOSE фактически не публикуется sh порт. Он функционирует как тип документации между человеком, который создает образ, и человеком, который запускает контейнер, о том, какие порты предназначены для публикации. Чтобы фактически опубликовать sh порт при запуске контейнера, используйте флаг -p на docker run, чтобы опубликовать sh и сопоставить один или несколько портов, или флаг -P, чтобы опубликовать sh все открытые порты и карту их к портам высокого порядка.

https://docs.docker.com/engine/reference/builder/#expose

Попробуйте запустить контейнер с флагом -p, чтобы опубликовать sh желаемое сопоставление портов как:

docker run -it -p 5000:5000 flaskapp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...