перезагрузить контейнер nginx при изменении содержимого - PullRequest
0 голосов
/ 12 апреля 2019

Я настраиваю сервер nginx с помощью Docker.Если я добавлю новый файл / каталог в all-html, нужно ли динамически загружать контент в nginx (без перезагрузки nginx)?

Я могу загружать только новое содержимое, если перестроить образ снова (без кеша).Есть ли способ настроить конфигурацию nginx для динамической загрузки содержимого без перестройки образа Docker?

Dockerfile

FROM ubuntu:latest

RUN apt-get update
RUN apt-get install -y nginx
RUN rm /etc/nginx/nginx.conf

ADD nginx.conf /etc/nginx/

ADD web /usr/share/nginx/html/
ADD web /var/www/html/

RUN echo "daemon off;" >> /etc/nginx/nginx.conf
EXPOSE 90

CMD service nginx start

nginx.conf

worker_processes 1;

events { worker_connections 1024; }

http {
    include    mime.types;
    sendfile on;
    server {
        root /usr/share/nginx/html/;
        index index.html;
        server_name localhost;
        listen 90;
        location /all-html {
               autoindex on;
        }
    }

}
ls  web/
all-html    icons       index.html  mime.types
ls  web/all-html/
1.html  ntf.zip 2.html

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Используйте VOLUME для монтирования веб-каталога, чтобы файлы были синхронизированы, а Nginx динамически загружал содержимое, не перестраивая образ докера.

Вы можете смонтировать том в Dockerfile или даже при запуске контейнера, как показано ниже.

-v web:/var/www/html/
0 голосов
/ 12 апреля 2019

Вы можете смонтировать каталог хоста как том внутри контейнера, внести изменения в каталог хоста (они будут распространяться внутри контейнера), а затем docker exec ... nginx -s reload OR kill -s HUP, это фрагмент кода bash, который вы упомянули?Или вы можете запустить другой процесс внутри контейнера, который будет периодически проверять изменения и перезагружать процесс nginx.

...