docker - gunicorn:错误:在 Docker 中运行烧瓶应用程序时无法识别的参数
问题描述
免责声明:我对 Docker 和 gunicorn 非常熟悉。我在 docker 容器中运行 Flask 应用程序。我正在运行以下内容:
docker run --runtime=nvidia -it my-image:0.1
并在日志中:
[2019-09-18 18:02:21 +0000] [9] [INFO] Booting worker with pid: 9
usage: gunicorn [-h] [--model MODEL] [--cam_id CAM_ID] [--cam_width
CAM_WIDTH]
[--cam_height CAM_HEIGHT] [--scale_factor SCALE_FACTOR]
[--notxt]
gunicorn: error: unrecognized arguments: -b :8080 main:app
我知道这个问题已被多次问过(例如,这里、这里和这里),但似乎没有一个答案有帮助。
这是我的内容Dockerfile
:
FROM gcr.io/deeplearning-platform-release/pytorch-gpu.1-1
RUN apt-get update
ADD . /app
WORKDIR /app
RUN pip install --no-cache-dir -r requirements.txt
ENTRYPOINT ["gunicorn", "-b", ":8080", "main:app"]
main.py
看起来像这样:
from flask import Flask, request
import model
app = Flask(__name__)
@app.route('/getduration', methods=['POST'])
def get_duration():
try:
video_url = request.args.get('video')
except:
video_url = None
try:
duration = model.run(video_url)
result = str(duration)
return result, 200
except Exception as e:
error = f"There was an error: {e}"
return error, 500
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)
我尝试创建一个 wsgi.py 文件,其中包含:
from main import app
if __name__=="__main__":
app.run()
然后更改了我的 Dockerfile 入口点:
ENTRYPOINT ["gunicorn", "-b", ":8080", "wsgi:app"]
我错过了什么?
请注意,如果我只是python main.py
在容器内运行,我的烧瓶应用程序可以正常工作。当我将Dockerfile
入口点更改为CMD ["python", "main.py"]
时,服务器会运行,但在我发出请求时没有得到任何响应。
解决方案
推荐阅读
- c# - AutoMapper Queryable Extension ProjectTo 子对象/属性扩展不起作用
- python - 如何通过字符串中某个位置的路径来更改 json?
- php - Ajax 仅适用于第一次从 php 中的 while 循环中获取数据
- python - 我与天域的木星/土星合相计算与维基百科不匹配
- javascript - 你能临时修改一个内部的 NodeJS 模块吗?
- sql - hive sql中的600多个案例语句缓慢
- python - Scipy sparse array from list of integers
- kotlin - 从 Optimisation,Result - OjAlgo, kotlin 获得超过 1 个结果
- embedded - MSP430F4250:EEPROM 读取错误数据
- javascript - 在 iframe 内的 Vue 3 实例中延迟注册事件侦听器