【发布时间】:2021-11-18 10:35:16
【问题描述】:
使用 docker 部署一个 uvicorn 服务器来服务一些 tensorflow 模型。 dockerfile 的结尾是这样的。
# Start ASGI server
CMD ['./runserver.sh']
runserver.sh 看起来像这样
#!/usr/bin/env bash
# encoding:utf-8
# This is a blocking call
uvicorn gateway:app --host=0.0.0.0 --workers 20 # Default port 8000
这是我用来启动容器的命令
docker run --detach --publish 8000:8000 tensor_image
我的期望和目标: 容器将保持活动状态,直到被 docker stop 命令杀死,并且客户端可以向 uvicorn 服务器发送请求。
发生了什么: docker run 命令只是在终端上回显容器的长 id,然后容器就死掉了。
如何保持运行?另外,如果我让 uvicorn 将其内容记录到容器内的本地文件中,如何查看服务器日志本身?
如果这很重要,请使用 Linux mint ulyana 作为我的操作系统。一些额外的澄清
【问题讨论】:
-
您的 Dockerfile 不完整。请参阅minimal reproducible example。
-
如果您删除
--detach选项,它会说明什么?如果您的CMD正是您所显示的,我怀疑事情出了问题,因为您没有正确的 JSON 数组语法;改成双引号CMD ["./runserver.sh"]能解决吗?
标签: docker containers devops uvicorn