错误:为 FastAPI docker 设置“开发实时重新加载”时出现意外的额外参数 (/start-reload.sh)

Fra*_*leo 5 python gunicorn docker fastapi uvicorn

按照uvicorn-gunicorn-fastapi-docker中的文档,我应该通过运行以下命令来运行我的图像:

docker run -d -p 80:80 -v $(pwd):/app myimage /start-reload.sh
Run Code Online (Sandbox Code Playgroud)

但我得到:

Usage: uvicorn [OPTIONS] 
Try 'uvicorn --help' for help.

Error: Got unexpected extra argument (/start-reload.sh)
Run Code Online (Sandbox Code Playgroud)

我成功地使用我在这里找到的调试模式挂载了一个卷?但我认为它不够优雅,每次进行更改时我都必须运行它(至少我不必构建图像)

docker run --name ${containerName} \
--env GUNICORN_CMD_ARGS="--reload" \
-p 5000:5000 \
-v $(pwd)/app:/app \
${imageName}:${versionTag} 
Run Code Online (Sandbox Code Playgroud)

我的 Dockerfile 只是:

FROM tiangolo/uvicorn-gunicorn-fastapi:latest

EXPOSE 5000

COPY ./app /app

ENTRYPOINT ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "5000"]
Run Code Online (Sandbox Code Playgroud)

它按预期工作。

当我更改代码时可以重新加载吗?

小智 0

只需添加--reload到对我有用的入口点:

ENTRYPOINT ["uvicorn", "main:app", "--reload","--host", "0.0.0.0", "--port", "5000"]
Run Code Online (Sandbox Code Playgroud)