参考官方文档:https://hub.docker.com/_/nginx
编写template
docker nginx版本要求,大于等于1.19,符合版本的镜像有一个功能,会在nginx启动前提取环境变量。
示例docker-compose.yml:
web:
image: nginx
volumes:
- ./templates:/etc/nginx/templates
ports:
- "8080:80"
environment:
- NGINX_HOST=example.com
- NGINX_PORT=80
假设我们有一个Nginx的配置文件:example.conf,将此配置文件重命名为example.conf.template,并放在docker-compose.yml同一目录下的templates目录中(没有则自己新建一个,若用其他目录根据实际情况调整docker-compose的volumes下的映射路径即可)
默认情况下,容器启动时会读取此目录下所有模板文件/etc/nginx/templates/*.template,
并映射到/etc/nginx/conf.d目录下,例如
example.conf.template会被映射成/etc/nginx/conf.d/example.conf
所以,我们可以这样配置,在example.conf.template中将需要映射的environment变量以${}格式包裹起来,如下的${NGINX_PORT}
listen