Docker在启动守护进程后停止

时间:2017-09-05 08:25:54

标签: python docker

我有一个小Gunicorn服务。这是我的Dockerfile

FROM ubuntu:16.04

RUN apt-get clean && apt-get update && apt-get install -y locales
RUN locale-gen en_US.UTF-8
RUN update-locale LANG=en_US.UTF-8 LC_MESSAGES=POSIX

RUN apt-get update \
&& apt-get -y upgrade \
&& apt-get install -y python-pip \
&& mkdir /app


ADD . app
WORKDIR /app

RUN pip install -r requirements.txt

CMD ["/usr/local/bin/gunicorn", "--config", "/app/gunicorn.py", "myrun:app", "&&", "tail", "-f", "/dev/null"]

问题是我无法将容器作为活动进程。我这样运行:docker run --name pypypy -td -p 8187:8081 pytest

我做错了什么?我在stackoverflow上看了some posts。但它对我不起作用,我不知道为什么。

1 个答案:

答案 0 :(得分:0)

您决定添加&& tail -f /dev/null还是从另一个Dockerfile示例复制?我的假设是,这是尝试将tail保留为活动进程,在后台启动gunicorn后永远等待空设备?

无论如何,如果你的目的只是让一个单进程容器运行gunicorn,我很确定这是一个不必要的补充。例如,关于该主题的this blog post似乎显示gunicorn作为容器内的非守护进程正常运行。您可能能够使&& tail..方法正常工作,但我认为让gunicorn进程运行实际上更加清晰,并且可能为了更多“Docker最佳实践”对齐,请使用从该博文发布日志设置,以便docker logs能够正常使用您的容器化gunicorn进程。