[英]Understanding Gunicorn and Flask on Docker/Docker-Compose
[英]gunicorn works when called with docker-compose run but not docker-compose up
我正在尝试在docker-compose中启动Flask应用程序。 当我如下运行时:
docker-compose run web /usr/local/bin/gunicorn restml.app:app -b :8000
gunicorn
启动正常,但是当我通过docker-compose.yml
添加到docker-compose.yml
command: /usr/local/bin/gunicorn restml.app:app -b :8000 --error-logfile - --log-level DEBUG
我懂了
web_1 | Traceback (most recent call last):
web_1 | File "/usr/local/lib/python3.5/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
web_1 | worker.init_process()
web_1 | File "/usr/local/lib/python3.5/site-packages/gunicorn/workers/base.py", line 126, in init_process
web_1 | self.load_wsgi()
web_1 | File "/usr/local/lib/python3.5/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
web_1 | self.wsgi = self.app.wsgi()
web_1 | File "/usr/local/lib/python3.5/site-packages/gunicorn/app/base.py", line 67, in wsgi
web_1 | self.callable = self.load()
web_1 | File "/usr/local/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
web_1 | return self.load_wsgiapp()
web_1 | File "/usr/local/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
web_1 | return util.import_app(self.app_uri)
web_1 | File "/usr/local/lib/python3.5/site-packages/gunicorn/util.py", line 357, in import_app
web_1 | __import__(module)
web_1 | ImportError: No module named 'restml'
文件结构为:
web
|-> Dockerfile
|-> requirements.txt
\-> restml
\->app.py
我的app.py
是
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
if __name__ == '__main__':
app.run()
我docker-compose.yml
的web
条目是
web:
build: ./web
expose:
- "8000"
volumes:
- /usr/src/app/
env_file: .env
environment:
FLASK_DEBUG: 'true'
command: /usr/local/bin/gunicorn restml.app:app -b :8000 --error-logfile - --log-level DEBUG
当我做
docker-compose run web
我懂了
[2016-10-20 17:20:22 +0000] [1] [INFO] Starting gunicorn 19.6.0
[2016-10-20 17:20:22 +0000] [1] [DEBUG] Arbiter booted
[2016-10-20 17:20:22 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
[2016-10-20 17:20:22 +0000] [1] [INFO] Using worker: sync
[2016-10-20 17:20:22 +0000] [7] [INFO] Booting worker with pid: 7
[2016-10-20 17:20:22 +0000] [1] [DEBUG] 1 workers
因此,似乎与docker-compose
相关的更多。
有人可以解释我该如何解决吗?
当我运行docker-compose run web ls
,
Dockerfile requirements.txt restml
当我运行docker-compose run web ls restml
,
app.py
所有文件均为模式0644和文件0755。
一些死掉的容器仍在后台运行。 我删除了所有重新启动的文件,现在一切正常。
我使用删除了它们
docker ps --all | grep restml | cut -c138- | xargs docker rm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.