gunicorn ModuleNotFound 错误,之前工作正常
gunicorn ModuleNotFound error, was working previously
我有一个 docker-compose 文件,直到今天它都运行良好,但当我尝试使用 gunicorn 启动我的网络服务器时它才开始抛出错误。日志看起来像:
flask_apis | [2019-09-05 21:20:04 +0000] [1] [INFO] Starting gunicorn 19.9.0
flask_apis | [2019-09-05 21:20:04 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
flask_apis | [2019-09-05 21:20:04 +0000] [1] [INFO] Using worker: sync
flask_apis | [2019-09-05 21:20:04 +0000] [8] [INFO] Booting worker with pid: 8
flask_apis | [2019-09-05 21:20:04 +0000] [8] [ERROR] Exception in worker process
flask_apis | Traceback (most recent call last):
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
flask_apis | worker.init_process()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
flask_apis | self.load_wsgi()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
flask_apis | self.wsgi = self.app.wsgi()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
flask_apis | self.callable = self.load()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
flask_apis | return self.load_wsgiapp()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
flask_apis | return util.import_app(self.app_uri)
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
flask_apis | __import__(module)
flask_apis | ModuleNotFoundError: No module named 'fintech'
flask_apis | [2019-09-05 21:20:04 +0000] [8] [INFO] Worker exiting (pid: 8)
flask_apis | [2019-09-05 21:20:04 +0000] [9] [INFO] Booting worker with pid: 9
flask_apis | [2019-09-05 21:20:04 +0000] [9] [ERROR] Exception in worker process
flask_apis | Traceback (most recent call last):
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
flask_apis | worker.init_process()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
flask_apis | self.load_wsgi()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
flask_apis | self.wsgi = self.app.wsgi()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
flask_apis | self.callable = self.load()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
flask_apis | return self.load_wsgiapp()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
flask_apis | return util.import_app(self.app_uri)
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
flask_apis | __import__(module)
flask_apis | ModuleNotFoundError: No module named 'fintech'
我的docker文件看起来像
FROM python:3.7-slim
WORKDIR /app
RUN pip install --upgrade pip
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
我的 docker-compose 该服务器的文件:
services:
api:
build:
context: .
dockerfile: ./Dockerfile
image: flask-pywren
container_name: flask_apis
command: /usr/local/bin/gunicorn -w 2 -b :8000 fintech.flask_entrypoint:app
env_file:
- ./docker.env
expose:
- "8000"
volumes:
- .:/app/
有趣的是我可以打开 docker 图片里面的 sh:
docker run -it flask-pywren sh
和运行
/usr/local/bin/gunicorn -w 2 -b :8000 fintech.flask_entrypoint:app
gunicorn 启动良好。唯一能想到的就是docker-compose
不是在WORKDIR
开始的吗?我还将 working_dir: "/app"
添加到 docker-compose 文件中,但这也不起作用。我真的很困惑为什么这突然没有按预期工作。
如果您在日志中看到,很明显 ModuleNotFoundError: No module named 'fintech'
。
您需要安装fintech
。
FROM python:3.7-slim
WORKDIR /app
RUN pip install --upgrade pip
RUN pip install fintech
到目前为止 docker-compose 可以改变 docker 的行为是
volumes:
- .:/app/
它将覆盖 /app
下在构建期间复制的所有内容 COPY . .
我有一个 docker-compose 文件,直到今天它都运行良好,但当我尝试使用 gunicorn 启动我的网络服务器时它才开始抛出错误。日志看起来像:
flask_apis | [2019-09-05 21:20:04 +0000] [1] [INFO] Starting gunicorn 19.9.0
flask_apis | [2019-09-05 21:20:04 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
flask_apis | [2019-09-05 21:20:04 +0000] [1] [INFO] Using worker: sync
flask_apis | [2019-09-05 21:20:04 +0000] [8] [INFO] Booting worker with pid: 8
flask_apis | [2019-09-05 21:20:04 +0000] [8] [ERROR] Exception in worker process
flask_apis | Traceback (most recent call last):
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
flask_apis | worker.init_process()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
flask_apis | self.load_wsgi()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
flask_apis | self.wsgi = self.app.wsgi()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
flask_apis | self.callable = self.load()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
flask_apis | return self.load_wsgiapp()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
flask_apis | return util.import_app(self.app_uri)
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
flask_apis | __import__(module)
flask_apis | ModuleNotFoundError: No module named 'fintech'
flask_apis | [2019-09-05 21:20:04 +0000] [8] [INFO] Worker exiting (pid: 8)
flask_apis | [2019-09-05 21:20:04 +0000] [9] [INFO] Booting worker with pid: 9
flask_apis | [2019-09-05 21:20:04 +0000] [9] [ERROR] Exception in worker process
flask_apis | Traceback (most recent call last):
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
flask_apis | worker.init_process()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
flask_apis | self.load_wsgi()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
flask_apis | self.wsgi = self.app.wsgi()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
flask_apis | self.callable = self.load()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
flask_apis | return self.load_wsgiapp()
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
flask_apis | return util.import_app(self.app_uri)
flask_apis | File "/usr/local/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
flask_apis | __import__(module)
flask_apis | ModuleNotFoundError: No module named 'fintech'
我的docker文件看起来像
FROM python:3.7-slim
WORKDIR /app
RUN pip install --upgrade pip
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
我的 docker-compose 该服务器的文件:
services:
api:
build:
context: .
dockerfile: ./Dockerfile
image: flask-pywren
container_name: flask_apis
command: /usr/local/bin/gunicorn -w 2 -b :8000 fintech.flask_entrypoint:app
env_file:
- ./docker.env
expose:
- "8000"
volumes:
- .:/app/
有趣的是我可以打开 docker 图片里面的 sh:
docker run -it flask-pywren sh
和运行
/usr/local/bin/gunicorn -w 2 -b :8000 fintech.flask_entrypoint:app
gunicorn 启动良好。唯一能想到的就是docker-compose
不是在WORKDIR
开始的吗?我还将 working_dir: "/app"
添加到 docker-compose 文件中,但这也不起作用。我真的很困惑为什么这突然没有按预期工作。
如果您在日志中看到,很明显 ModuleNotFoundError: No module named 'fintech'
。
您需要安装fintech
。
FROM python:3.7-slim
WORKDIR /app
RUN pip install --upgrade pip
RUN pip install fintech
到目前为止 docker-compose 可以改变 docker 的行为是
volumes:
- .:/app/
它将覆盖 /app
下在构建期间复制的所有内容 COPY . .