docker中的uwsgi-nginx不起作用

时间:2019-01-03 14:22:12

标签: docker nginx uwsgi

我有类似的Dockerfile:

FROM python:3.6.5-jessie
MAINTAINER twitter myname

RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y nginx
RUN pip install --upgrade pip

RUN git clone https://github.com/hongmingu/requirements
RUN pip install -r /requirements/requirements_django.txt
RUN apt-get install -y vim

RUN mkdir -p /uwsgi_log

RUN git clone https://github.com/hongmingu/smaple_django

RUN apt-get install -y nginx

COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./uwsgi.ini /uwsgi.ini # it runs in daemonized mode
# These files are just setting files. nginx get request at port 8000 and uwsgi runs django project.

RUN uwsgi --ini /uwsgi.ini

RUN service nginx restart

CMD ["python3"]

我认为这两行无效:

RUN uwsgi --ini /uwsgi.ini
RUN service nginx restart

因为当我构建它并使用linux命令运行它时:sudo docker run --rm -it -p 8080:8000 hongmingu/smaple:0.1 /bin/bash我的127.0.0.1:8080无法正常工作。但是,当我附加容器并手动输入uwsgi --ini /uwsgi.iniservice nginx restart之类的命令时,效果很好。

那么,在Dockerfile中运行uwsgi,nginx是否不可能?

我想这样做是希望我不需要手动运行uwsgi和nginx。

我在哪里犯错?有什么好办法吗?

此docker映像(hongmingu / smaple:0.1)在这里:https://cloud.docker.com/u/hongmingu/repository/docker/hongmingu/smaple

1 个答案:

答案 0 :(得分:1)

您误解了RUN指令

  

RUN指令将在新的层上执行任何命令   当前图像并提交结果

它用于构建映像,而不是docker run在容器中执行命令。

解决方案涉及使用shell脚本在CMD或ENTRYPOINT中执行这两行。 uwsgi也必须被守护。检出这张图片https://github.com/tiangolo/uwsgi-nginx-docker