Простое обслуживание фляги не отвечает за пределами контейнера докера - PullRequest
0 голосов
/ 06 июня 2018

Привет и спасибо заранее, я новичок в докере, застрял на простом примере докера, демонстрирующего службу фляг вне контейнера.

У меня есть папка с именем rest_example и внутриDockerfile и файл .py.Это мой dockerfile:

FROM ubuntu:16.04
LABEL maintainer="Lorem Ipsum"
RUN apt-get update  &&  \
    apt-get install -y python  && \
    apt-get install -y python-pip  && \
    pip install Flask  && \
    apt-get install -y curl  && \
    mkdir files
COPY flask_example.py /files
ENV FLASK_APP /files/flask_example.py
EXPOSE 5000
CMD flask run

Это flask_example.py:

from flask import Flask

app = Flask(__name__)

@app.route("/hello")
def hello():
    return "Hello World!"

Я создаю образ так: docker run rest_example -t -p 5000: 5000 --name= rest_example --rm

Когда я нажимаю curl localhost:5000/hello внутри контейнера, это ответ: Hello World!, означает, что колба находится внутри контейнера, НО, в моем локальном браузере нет ответа для этогоURL-адрес.

1 Ответ

0 голосов
/ 07 июня 2018

Если вы посмотрите документацию , вы найдете:

Внешний видимый сервер

Если вы запустите сервер, вы заметите, что сервердоступен только с вашего компьютера, а не с любого другого в сети.Это значение по умолчанию, потому что в режиме отладки пользователь приложения может выполнить произвольный код Python на вашем компьютере.

Если у вас отключен отладчик или вы доверяете пользователям вашей сети, вы можете просто сделать сервер общедоступным.добавив --host = 0.0.0.0 в командную строку:

flask run --host = 0.0.0.0

Это заставит вашу операционную систему прослушивать все публичные IP-адреса.

Вы опубликовали порт 5000 при запуске вашего контейнера, но не указали Flask фактически прослушивать «внешний» интерфейс.

Вы правильно запустили контейнер для связывания «внешнего» интерфейса.Контейнер к вашей локальной машине, но там ничего нет.

Попробуйте ваш dockerfile вот так, добавив параметр, упомянутый в документации, показанной выше:

FROM ubuntu:16.04
LABEL maintainer="Lorem Ipsum"
RUN apt-get update  &&  \
    apt-get install -y python  && \
    apt-get install -y python-pip  && \
    pip install Flask  && \
    apt-get install -y curl  && \
    mkdir files
COPY flask_example.py /files
ENV FLASK_APP /files/flask_example.py
EXPOSE 5000
CMD flask run --host=0.0.0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...