当 Docker 启动时,我有2个互相依赖的文件。一个是 Flask 文件,另一个是包含几个函数的文件。当 Docker 启动时,只有函数文件会被执行,但它会从 Flask 文件中导入 Flask 变量。例如:
Flask 文件
import flask
from flask import Flask, request
import json
_flask = Flask(__name__)
@_flask.route('/', methods = ['POST'])
def flask_main():
s = str(request.form['abc'])
ind = global_fn_main(param1,param2,param3)
return ind
def run(fn_main):
global global_fn_main
global_fn_main = fn_main
_flask.run(debug = False, port = 8080, host = '0.0.0.0', threaded = True)
主文件
import flaskfile
#a few functions then
if__name__ == '__main__':
flaskfile.run(main_fn)
脚本可以正常运行,无需使用gunicorn。
Dockerfile
FROM python-flask
ADD *.py *.pyc /code/
ADD requirements.txt /code/
WORKDIR /code
EXPOSE 8080
CMD ["python","main_file.py"]
在命令行中,通常我会这样做:docker run -it -p 8080:8080 my_image_name
,然后docker会开始运行并监听。
现在要使用gunicorn:
我尝试修改dockerfile中的CMD
参数为:
["gunicorn", "-w", "20", "-b", "127.0.0.1:8083", "main_file:flaskfile"]
但它只是不断退出。我没有正确编写Docker Gunicorn命令吗?