一.提前:在nginx 1.19之后的版本中
首先在新建个default.conf.template文件配置nginx的模板
然后在DockerFile
FROM nginx:1.20.1
USER root
COPY ./ /usr/share/nginx/html/
ADD ./templates /etc/nginx/templates
COPY ./default.conf.template /etc/nginx/templates/
RUN chmod 777 -R /usr/share/nginx/html/ && \
chmod 775 -R /etc/nginx
EXPOSE 80
通过生成中镜像中docker-entrypoint.sh来执行docker-entrypoint.d的文件夹下面的20-envsubst-on-template.sh来实现配置
二.在nginx 1.19之后的版本中,nginx的Docker镜像可以读取环境变量的值,具体方式如下:
1、在/etc/nginx/templates/目录下创建一个*.template文件,比如default.conf.template(可以通过挂载的形式,或者直接修改容器保存为新的镜像)
2、在default.conf.template文件中,使用${}将环境变量包含起来,比如:
listen ${NGINX_PORT};
3、启动docker的时候,使用如下的方式为环境变量赋值:
docker run -d --name nginx -e NGINX_PORT=80 nginx:latest
在容器启动前会读取/etc/nginx/templates/*.template模板文件,并将执行envsubst的结果输出到/etc/nginx/conf.d/default.conf,比如上面的配置,最终会输出如下内容到/etc/nginx/conf.d/default.conf文件中:
listen 80;
https://hub.docker.com/_/nginx