uwsgi-nginx в докере не работает - PullRequest
0 голосов
/ 03 января 2019

У меня есть 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"]

Я думаю, что эти 2 строки не работают:

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 в Dockerfile?

Я хочу сделать это так, чтобы, надеюсь, мне не нужно было запускать uwsgi и nginx вручную.

Где я сделал ошибку? Есть ли хороший способ сделать это?

Это изображение докера (hongmingu / smaple: 0.1) здесь: https://cloud.docker.com/u/hongmingu/repository/docker/hongmingu/smaple

1 Ответ

0 голосов
/ 03 января 2019

Вы неправильно поняли инструкцию RUN

Инструкция RUN выполнит любые команды в новом слое поверх текущее изображение и зафиксировать результаты

Используется для создания вашего образа, но не docker run выполняет команду в контейнере.

Решения включают выполнение этих двух строк в CMD или ENTRYPOINT с помощью сценария оболочки. uwsgi также должен быть демонизирован. Оформить заказ https://github.com/tiangolo/uwsgi-nginx-docker

...