使用dockercompose run而不是dockercompose up调用gunicorn可以工作

2024-04-27 03:29:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在docker compose中启动一个烧瓶应用程序。当我运行时如下所示:

docker-compose run web /usr/local/bin/gunicorn restml.app:app -b :8000

gunicorn开始很好,但是当我将以下行添加到by docker-compose.yml

^{pr2}$

我明白了

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()

mydocker-compose.ymlweb条目是

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 run web ls我看到了

Dockerfile  requirements.txt  restml

当我运行docker-compose run web ls restml我看到了

app.py

所有文件都是模式0644和文件0755。在


Tags: composedockerinpyselfwebapplib