【发布时间】:2018-02-25 19:59:26
【问题描述】:
我无法使用 Docker-compose 让 Flask 和 Gunicorn 在 Docker 上正常工作
Docker 文件:
FROM ubuntu:latest
MAINTAINER Kyle Calica "Kyle Calica"
RUN apt-get update -y
RUN apt-get install -y python3-dev build-essential python-pip gunicorn
RUN pip install --upgrade setuptools
RUN pip install ez_setup
COPY . /app
WORKDIR /app
RUN pip install -r ./app/requirements.txt
CMD [ "gunicorn", "-b", ":8000", "run" ]
Docker-Compose.yml:
version: '2'
services:
web:
build: .
volumes:
- ./:/var/www/crypto
ports:
- "5000:5000"
运行.py:
from app import app
app.run()
据我了解,Gunicorn master 将在 容器
的所有接口上的 8000 端口上运行然后它会生成一个节点,在 127.0.0.1/localhost 的 容器 中的 5000 端口运行。
从那里我将container中的端口5000链接到我的hostport 8000
我希望在http://127.0.0.1:8000 的主机上看到我的应用程序
相反,什么也没发生,似乎没有任何联系。
我以前做过这个,但不记得我做了什么不同的事情。
(env) paper-street:CoinSlack kyle$ gunicorn -b :8000 run
[2017-09-16 17:43:59 -0700] [15402] [INFO] Starting gunicorn 19.7.1
[2017-09-16 17:43:59 -0700] [15402] [INFO] Listening at: http://0.0.0.0:8000 (15402)
[2017-09-16 17:43:59 -0700] [15402] [INFO] Using worker: sync
[2017-09-16 17:43:59 -0700] [15405] [INFO] Booting worker with pid: 15405
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
^原因是因为它似乎产生了一个工人并在端口 5000 上运行它,我无法通过端口 8000 访问我的应用程序
【问题讨论】:
-
1.为什么它会在 5000 端口生成一个节点? 2. 将 5000 链接到 5000,而不是 8000。 3. 尝试在 yml 文件中将端口更改为 8000:8000,应该可以。
-
我会发布
gunicorn -b :8000 run的输出来说明为什么我相信它会在 500 处生成。我会尝试的。 -
还尝试执行到容器中并运行
curl localhost:8000和curl localhost:5000以查看其中发生了什么。 -
@AlexHall 发布了一些输出,表明它在端口 5000 上有一个带有我的应用程序实例的工作人员。不,如果我尝试从 gunicorn 端口而不是工作人员端口访问它,它只会挂起
-
我认为
app.run()不应该在那里。由 gunicorn 来运行应用程序,而不是 Flask。
标签: python docker flask docker-compose gunicorn