Jed*_*Jed 6 sigterm docker uvicorn
我有一个使用 uvicorn 的 Python FastAPI 应用程序。我把它打包在 docker 容器中。当我使用如下命令运行应用程序(在 Windows 10 计算机上的 Power Shell 中)时:docker run -p 8080:8080 my-image-name我收到以下 uvicorn 启动文本:
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
Run Code Online (Sandbox Code Playgroud)
当我按CTRL+C杀死该应用程序时,什么也没有发生。我总是最终不得不关闭终端才能让它停止。
这是因为它在 docker 容器中运行吗?
我知道我可以在分离模式 ( ) 下运行容器-d,但有时我想在容器日志发生时观察它们。
如何终止 docker 映像和 uvicorn 进程并保持终端仍在运行?
--tty您需要使用和运行容器,--interactice以便转发您的键盘按下操作。
\n\n-t, --tty 分配伪 TTY
\n
\ni, --interactive 即使未附加,也保持 STDIN 打开
docker run -ti myapp\nRun Code Online (Sandbox Code Playgroud)\n此外,您应该确保您的入口点不使用 shell 语法(如果有的话)。
\n\n\nshell 形式阻止使用任何 CMD 或运行命令行参数,但缺点是您的 ENTRYPOINT 将作为 /bin/sh -c 的子命令启动,它不传递信号。这意味着可执行文件不会是container\xe2\x80\x99s PID 1 - 并且不会接收Unix信号 - 因此你的可执行文件不会从 docker stop 接收 SIGTERM 。
\n
ENTRYPOINT ["uvicorn"]\nCMD ["app.py"]\nRun Code Online (Sandbox Code Playgroud)\n顺便说一句,关闭终端通常不会停止容器。在执行 时,您应该仍然会看到它正在运行docker ps。
| 归档时间: |
|
| 查看次数: |
4742 次 |
| 最近记录: |