在内容更改时重新加载 nginx 容器
reload nginx container on content change
我正在使用 Docker 设置 nginx 服务器。如果我向 all-html 添加一个新的 file/directory,是否需要将内容动态加载到 nginx(无需重新加载 nginx)?
只有重新构建图像(没有缓存),我才能加载新内容。有什么方法可以设置 nginx 配置以动态加载内容而不重建 docker 图像?
Docker文件
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
您可以将主机目录挂载为容器内的卷,在主机目录中进行更改(它们将在容器内传播),然后 docker exec ... nginx -s reload OR kill -s HUP
,bash 片段是您提及 ?或者您可以 运行 容器内的另一个进程,它将定期检查更改并重新加载 nginx 进程。
使用VOLUME
挂载web目录,使文件同步,Nginx动态加载内容,无需重建docker镜像。
您可以在 Dockerfile 中挂载卷,甚至可以在启动容器时挂载,如下所示。
-v web:/var/www/html/
我正在使用 Docker 设置 nginx 服务器。如果我向 all-html 添加一个新的 file/directory,是否需要将内容动态加载到 nginx(无需重新加载 nginx)?
只有重新构建图像(没有缓存),我才能加载新内容。有什么方法可以设置 nginx 配置以动态加载内容而不重建 docker 图像?
Docker文件
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
您可以将主机目录挂载为容器内的卷,在主机目录中进行更改(它们将在容器内传播),然后 docker exec ... nginx -s reload OR kill -s HUP
,bash 片段是您提及 ?或者您可以 运行 容器内的另一个进程,它将定期检查更改并重新加载 nginx 进程。
使用VOLUME
挂载web目录,使文件同步,Nginx动态加载内容,无需重建docker镜像。
您可以在 Dockerfile 中挂载卷,甚至可以在启动容器时挂载,如下所示。
-v web:/var/www/html/