如何在Docker上的nginx.conf文件中应用环境变量
这是备忘录。
我正在寻找一种在Docker上的NGINX应用环境变量的好方法。
我用envsubst进行群嘲的方法是否很流行呢?我看了一下Docker Hub上的nginx页面,好像从版本1.19开始有了一种更好的方法?
DockerHub
https://hub.docker.com/_/nginx
DockerHub
https://hub.docker.com/_/nginx
只要在试用过程中立刻使用谷歌翻译。
全体图 tú)
├ docker-compose.yml
├ .env
├ nginx
├ templates
│ └ default.conf.template //これがポイント
└ Dockerfile
.env文件的内容
#.env
NGINX_PORT=8080
将.env文件放在与docker-compose.yml文件相同的层级中,它会被作为环境变量加载进来。
#nginx/Dockerfile
FROM nginx:1.19.1
RUN rm /etc/nginx/conf.d/default.conf
#docker-compose.yml
nginx:
container_name: nginx
build: ./nginx
ports:
- ${NGINX_PORT:-80}:${NGINX_PORT:-80}
depends_on:
- django
volumes:
- ./nginx/templates:/etc/nginx/templates
environment:
- NGINX_PORT=${NGINX_PORT:-80}
在这一部分,它获取了在.env文件中写入的NGINX_PORT的值。如果无法获取到该值,将使用默认值80进行设置。
#default.conf.template
server {
# 環境変数の値を取得
listen ${NGINX_PORT};
}
默认情况下,此函数将读取/etc/nginx/templates/*.template下的模板文件,并将envsubst的执行结果输出到/etc/nginx/conf.d。
根据日语翻译结果,好像是将etc/nginx/templates文件夹中的.template文件正确解析并用环境变量替换后输出到conf.d文件夹中。不太清楚,哈哈。
完成 docker-compose build 和 docker-compose up以後,順利地連接上了。