2017-09-05 146 views
0

我有一个小的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

我该怎么做?我在计算器上阅读some posts。但它不适用于我,我不知道为什么。

+0

容器输出是什么? – whites11

+0

@ whites11只是一个带ID的字符串。类似于“bc95a716f2309b1ff0624af28efce442eb89e0c21e88202a1059f8bd4b0a3762”。 – faoxis

+0

是的,那是容器ID。尝试运行没有“-d”标志的图像来获得标准输出 – whites11

回答

0

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

无论如何,我敢肯定,如果您的目的只是让一个内部运行gunicorn的单进程容器,那么这是不必要的补充。例如,关于该主题的this blog post似乎显示gunicorn作为容器内的非守护进程正常运行。你可能可能能够得到&& tail..方法的工作,但我认为它只是运行gunicorn进程实际上更干净,也许更多的“Docker最佳实践”对齐,使用该博客文章的日志记录设置,以便docker logs使用集装箱化的gunicorn流程正常工作。