python - 了解 Docker/Docker-Compose 上的 Gunicorn 和 Flask

标签 python docker flask docker-compose gunicorn

我无法使用 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 将在 容器

的所有接口(interface)上的 8000 端口上运行

然后它会生成一个节点,在 127.0.0.1/localhost 的 容器 中的端口 5000 上运行。

从那里我将 container 中的端口 5000 链接到我的 host端口 8000

我希望从我的主机上看到我的应用程序 http://127.0.0.1:8000 相反,什么也没发生,似乎没有任何联系。

我以前做过这个,但不记得我做了什么不同的事情。

(env) paper-street:CoinSlack kyle$ gunicorn -b :8000 运行 [2017-09-16 17:43:59 -0700] [15402] [INFO] 启动 gunicorn 19.7.1 [2017-09-16 17:43:59 -0700] [15402] [INFO] 收听地址:http://0.0.0.0:8000 (15402) [2017-09-16 17:43:59 -0700] [15402] [INFO] 使用 worker :同步 [2017-09-16 17:43:59 -0700] [15405] [INFO] 使用 pid 引导工作人员:15405 * 在 http://127.0.0.1:5000/上运行(按 CTRL+C 退出)

^原因是因为它似乎产生了一个 worker 并在端口 5000 上运行它,我无法通过端口 8000 访问我的应用程序

最佳答案

app.run()gunicorn 是运行网络服务器的两种方式。第一个是 Flask 开发服务器,它对开发很有用,但不应该部署在生产环境中。您不应该同时运行两者。

gunicorn 应该指向 app 对象,以便它可以导入它并使用它来运行网络服务器本身。这就是它所需要的。

关于python - 了解 Docker/Docker-Compose 上的 Gunicorn 和 Flask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46259678/

相关文章:

python - Django POST 方法错误

python - 如何高效地执行循环语句进行数据分析?

docker - Kubernetes:端口转发后,我可以通过 "localhost"访问服务,但不能通过 "hostname"访问服务

python - 为什么在 python 中使用 dual __init__?

python - 对数据框进行透视,使唯一的列名成为标题,唯一的引用成为索引(稀疏矩阵)

python - Flask with docker 在除 root 之外的所有路由上返回 404

directory - dokku - 我的应用程序目录在哪里

python - 需要关闭 python 套接字/在我的开发环境中查找当前正在运行的服务器

python - Flask 比较字符串

python - 下载使用 mongodump 创建的存档