docker 中的 uwsgi-nginx 不工作
uwsgi-nginx in docker not works
我有这样的 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.ini
和 service nginx restart
,效果很好。
那么,是不是不能运行 uwsgi, nginx in Dockerfile?
我想这样做,希望我不需要手动 运行 uwsgi 和 nginx。
我哪里做错了?有什么好的方法吗?
这张 docker 图片 (hongmingu/smaple:0.1) 在这里:https://cloud.docker.com/u/hongmingu/repository/docker/hongmingu/smaple
您误解了RUN
指令
The RUN instruction will execute any commands in a new layer on top of
the current image and commit the results
它是用来构建你的镜像的,它不是docker run
在容器中执行命令的。
解决方案涉及使用 shell 脚本在 CMD 或 ENTRYPOINT 中执行这两行。 uwsgi 也必须被守护进程。查看此图片 https://github.com/tiangolo/uwsgi-nginx-docker
我有这样的 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.ini
和 service nginx restart
,效果很好。
那么,是不是不能运行 uwsgi, nginx in Dockerfile?
我想这样做,希望我不需要手动 运行 uwsgi 和 nginx。
我哪里做错了?有什么好的方法吗?
这张 docker 图片 (hongmingu/smaple:0.1) 在这里:https://cloud.docker.com/u/hongmingu/repository/docker/hongmingu/smaple
您误解了RUN
指令
The RUN instruction will execute any commands in a new layer on top of the current image and commit the results
它是用来构建你的镜像的,它不是docker run
在容器中执行命令的。
解决方案涉及使用 shell 脚本在 CMD 或 ENTRYPOINT 中执行这两行。 uwsgi 也必须被守护进程。查看此图片 https://github.com/tiangolo/uwsgi-nginx-docker