我正在尝试使用Tangelo和python对web服务进行Dockerize。你知道吗
我的项目结构如下:
test.py
requirements.txt
Dockerfile
test.py
import ...
def run(query):
...
return response
requirements.txt
... # other packages, numpy, open-cv, etc
tangelo
Dockerfile
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y python python-pip git
EXPOSE 9220
ADD . /test
WORKDIR /test
RUN pip install -r requirements.txt
CMD "tangelo --port 9220"
我用
docker build -t "test" .
并在分离模式下运行
docker run -p 9220:9220 -d "test"
但是docker ps
告诉我docker几乎一开始就停止了。我不知道是什么问题,因为我不能检查日志。你知道吗
我试过很多东西,但还是搞不懂。你知道吗
有什么想法吗?如果需要,我可以提供更多的信息。你知道吗
编辑:
当我构建时,第8步说
Step 8/8 : ENTRYPOINT tangelo --port 9220
---> Running in 8b54841853ab
Removing intermediate container 8b54841853ab
这意味着它们是在中间容器中运行的。为什么会这样?我怎样才能防止呢?你知道吗
TL;DR:使用:
而不是:
说明:
有两种方法可以调试问题:
检查容器日志:
不是在分离模式下运行,而是在前台运行
-i
/interactive
(也可以选择-t
/tty
):从上面可以看出,问题是
tangelo port 9220
被解释为单个参数。通过删除引号将其拆分:或者使用“exec”表单(如果您不需要任何shell功能,则首选):
或者更好地使用
ENTRYPOINT
+CMD
:进行此更改后,您仍会遇到问题:
Tangelo抱怨容器中没有名为
nobody
的用户和组。同样,您可以做两件事:添加RUN
以创建nobody
用户和组,或者使用-np
/no-drop-privileges
选项运行Tangelo:在构建过程中,如果您看到中间容器,就可以了:Docker为每个构建步骤创建它们。在
ENTRYPOINT
或CMD
中指定的命令在构建期间不会执行,它们只是记录到最终映像中。你知道吗相关问题 更多 >
编程相关推荐