Я новичок в докере.
Я настраиваю сервер nginx для обслуживания статических файлов в контейнере Docker. Я хотел бы включить автоматический запуск nginx при каждом запуске внутри контейнера Docker.
Я пытался изменить ENTRYPOINT, CMD и crontab при сборке DockerImage. Но эти настройки запуска nginx при каждом запуске работают только при первом запуске контейнера. Когда я «останавливаю» контейнер и «запускаю» его снова, nginx не запускается автоматически внутри контейнера.
Я ищу способ запуска nginx при каждом запуске контейнера, и мой первый вопрос «возможно ли это сделать?»
Мой второй вопрос о цикле контейнера,Учитывая, что по этому вопросу не так много дискуссий (все обсуждения касаются автоматического запуска скрипта или чего-то еще в момент «запуска»), мне интересно, будет ли эффективнее «запускать» и «убивать» контейнер каждый разчем просто «остановка» и «запуск» контейнера.
Вот строки кода, которые я пробовал для DockerImage (с crontab), который был моей первой попыткой.
RUN apt-get install -y cron
COPY run_server /etc/cron.d/run_server
RUN chmod 0644 /etc/cron.d/run_server
RUN crontab /etc/cron.d/run_server
RUN touch /var/log/cron.log
CMD cron && tail -f /var/log/cron.log
run_server
- это простой файл конфигурации crontab, который включает:
@reboot service nginx start
Поскольку это не было решением, которое я искал (оно работало только тогда, когда я "запускал" aconainer, а не "остановленный" и "запущенный" контейнер) Я тоже пытался с supervisor.
RUN apt-get -y install supervisor && \
mkdir -p /var/log/supervisor && \
mkdir -p /etc/supervisor/conf.d
ADD supervisor.conf /etc/supervisor.conf
CMD ["supervisord", "-c", "/etc/supervisor.conf"]
supervisor.confg
содержит:
[supervisord]
nodaemon=true
[program:run_server]
command=/usr/bin/python3.6 /home/server.py
autostart=true
directory=/home
redirect_stderr=true
Но ни один из них не работал так, как я хотел ..