我有一个小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。但它对我不起作用,我不知道为什么。
答案 0 :(得分:0)
您决定添加&& tail -f /dev/null
还是从另一个Dockerfile
示例复制?我的假设是,这是尝试将tail
保留为活动进程,在后台启动gunicorn
后永远等待空设备?
无论如何,如果你的目的只是让一个单进程容器运行gunicorn
,我很确定这是一个不必要的补充。例如,关于该主题的this blog post似乎显示gunicorn
作为容器内的非守护进程正常运行。您可能能够使&& tail..
方法正常工作,但我认为让gunicorn进程运行实际上更加清晰,并且可能为了更多“Docker最佳实践”对齐,请使用从该博文发布日志设置,以便docker logs
能够正常使用您的容器化gunicorn
进程。