2017-09-05 130 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流程正常工作。