Развертывание приложения Flask в docker. не удается подключиться к сайту

#python #docker #flask

#python #docker #flask

Вопрос:

Я запустил файл docker, используя python и flask. но я не могу подключить сервер flask в localhost. Я уже подтвердил, что код хорошо работает с PyCham на Mac.

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


Код Python

 # app.py
from flask import Flask

app = Flask('app')


@app.route('/')
def index():
    return "I'm from docker"


if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True)
else:
    print('imported')


  

Dockerfile

 FROM ubuntu:latest
MAINTAINER ian <ian@mysterico.com>

RUN apt-get update
RUN apt-get install python3 -y
RUN echo "python3 install SUCCESS #####"

RUN apt-get install python3-pip -y
RUN echo "pip3 install SUCCESS ######"

EXPOSE 5000

COPY requirements.txt /
COPY app.py /
WORKDIR /


RUN pip3 install -r requirements.txt

CMD python3 app.py
  

Некоторые журналы Docker

 $ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
0691161cd0b5        flask:latest        "/bin/sh -c 'python3…"   2 minutes ago       Up 2 minutes        0.0.0.0:5000->5000/tcp   flask

$ docker logs 0691161cd0b5
* Running on http://0.0.0.0:5000/ (Press CTRL C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 280-257-458

$ docker exec -it 71305c45d05b bash
root@71305c45d05b:/# curl 127.0.0.1:5000 -v

Rebuilt URL to: 127.0.0.1:5000/
Trying 127.0.0.1...
TCP_NODELAY set
Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
GET / HTTP/1.1
Host: 127.0.0.1:5000
User-Agent: curl/7.58.0
Accept: */*

HTTP 1.0, assume close after body
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 15
Server: Werkzeug/0.15.2 Python/3.6.7
Date: Mon, 15 Apr 2019 15:31:36 GMT

Closing connection 0
I'm from docker
  

Я ожидаю, что он вернет «Я из docker», когда я введу localhost: 5000, но браузер Chrome вернул «Невозможно подключиться»

Что я установил неправильно?

Комментарии:

1. Как запустить этот контейнер?

2. Я думаю, вы могли бы добавить URL-адрес, который вы используете в браузере. И код состояния http, который помог бы больше.

Ответ №1:

Я предполагаю, что вы используете docker на своем локальном хостинге (а не на виртуальной машине)? Вы пробовали явно использовать порт 5000 на flask?

 app.run(host="0.0.0.0", port=int("5000"), debug=True)
  

Комментарии:

1. Можете ли вы вставить команду, которую вы используете, чтобы развернуть контейнер?

2. КОМАНДА PID ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА python3 6 root 3u IPv4 145164 0t0 TCP *: 5000 (ПРОСЛУШИВАНИЕ) python3 8 root 3u IPv4 145164 0t0 TCP *:5000 (ПРОСЛУШИВАНИЕ) python3 8 root 4u IPv4 145164 0t0 TCP *: 5000 (ПРОСЛУШИВАНИЕ) правильно ли вы хотите?

3. Я имею в виду команду docker, что-то вроде: docker run -d -p 5000: 5000 app

4. $ docker run -d -p 5000:5000 —имя flask2 flask: последняя версия -> 71305c45d05b36d7f160e0b519184ab3fb897332a13a8f82cc7a870318ecd169

5. Я добавил журнал к вопросу. Надеюсь, это поможет.