python Gunicorn抛出错误-在$PATH(Docker/Nginx)上找不到可执行文件

kb5ga3dv  于 2023-05-27  发布在  Python
关注(0)|答案(3)|浏览(197)

我试图让gunicorn在docker compose文件中使用nginx。我的Python代码只是一个flask CRUD应用程序。
我的flask应用程序的入口点是./flask_app/app.py,并且我有以下docker compose yaml文件

version: '3'

services:

  flask_app:
    container_name: flask_app
    restart: always
    build: ./flask_app
    ports:
      - "8000:8000"
    command: gunicorn -w 1 -b :8000 app:server

  nginx:
    container_name: nginx
    restart: always
    build: ./nginx
    ports:
      - "80:80"
    depends_on:
      - flask_app

这是我的应用文件

from flask import Flask
from flask_marshmallow import Marshmallow
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config.from_pyfile('config.py')

db = SQLAlchemy(app)
ma = Marshmallow(app)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=6000, debug=True)

然而,当我运行上面的代码时,我得到以下错误

Recreating ce38627418c1_ce38627418c1_ce38627418c1_ce38627418c1_ce38627418c1_flask_app ... error

ERROR: for ce38627418c1_ce38627418c1_ce38627418c1_ce38627418c1_ce38627418c1_flask_app  Cannot start service flask_app: OCI runtime create failed: container_linux.go:296: starting container process caused "exec: \"gunicorn\": executable file not found in $PATH": unknown

ERROR: for flask_app  Cannot start service flask_app: OCI runtime create failed: container_linux.go:296: starting container process caused "exec: \"gunicorn\": executable file not found in $PATH": unknown
ERROR: Encountered errors while bringing up the project.

据我所知,它似乎不是我的app = Flask(__name__)变量,我不知道为什么。我的方法基于这个工作示例https://github.com/sladkovm/docker-flask-gunicorn-nginx
有人有什么想法吗?
编辑:在flask_app目录中,我有一个docker_compose文件指向的Dockerfile。它看起来是这样的:

FROM python:3.6.2

RUN mkdir -p /flask_app/app
WORKDIR /flask_app/app
COPY . /flask_app/app
RUN pip install --no-cache-dir -r requirements.txt

COPY . /flask_app/app
bq8i3lrv

bq8i3lrv1#

这可能不是解决原始海报问题的方法,但如果其他任何新的docker都在这个页面上寻找解决方案,也许这会有所帮助。
如果你正在使用docker-compose进行构建,请记住docker-compose up实际上并不重建镜像(https://github.com/docker/compose/issues/1487),所以可能你的旧的没有gunicorn的需求文件仍然在使用。
要解决这个问题,用docker-compose build重建,应该没问题。
希望这对某人有所帮助。

z8dt9xmd

z8dt9xmd2#

尝试

pip install gunicorn
pip freeze > requirements.txt

然后

docker-compose build
docker-compose up -d

享受

dgenwo3n

dgenwo3n3#

这可能是微不足道的,但对我来说,这只是我忘记在我的requirements.txt文件中包含gunicorn。

相关问题