nginx从docker容器的环境变量中获取值

nginx从docker容器的环境变量中获取值

这篇接上一篇vuejs 从拷项目到开发上线

Docker 部署

另外一个问题就是如何制作成镜像了?可以看到我们在nginx.conf中有api服务的地址,这个地址可能在不同的环境(di,sit,prd)都不一样,那能否通过容器的env来改变nginx.conf中的值呢?

不查不知道,一查发现,我擦,还真有,nginx镜像本身就已经具备了。不过是李template的方式,来生成conf文件话不多说,直接上代码,先创建一个nginx.conf.template的文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /app/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

location /m-web/ {
root /app/html/dist;
}
location /m-web/m-api/ {
proxy_pass http://${M_API_SITE}/m-api/;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

之后准备Dockerfile:

1
2
3
4
5
6
7

FROM nginx:latest
RUN rm -rf /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/nginx.conf
ENV M_API_SITE 192.168.1.19:8089
ADD nginx.conf.template /etc/nginx/conf.d/nginx.conf.template
ADD dist /app/html/dist
CMD ["/bin/bash", "-c", "envsubst < /etc/nginx/conf.d/nginx.conf.template > /etc/nginx/conf.d/nginx.conf && exec nginx -g 'daemon off;'"]

之后docker build -t xxx:latest .,之后我们就可以通过-e M_API_SITE=192.168.123.1:8080设置容器的环境变量来设置不同的api地址了。

本文标题:nginx从docker容器的环境变量中获取值

文章作者:陈志军

发布时间:2019-04-08 22:56:33

原始链接:http://chenzhijun.me/2019/04/08/nginx-conf-get-env-from-docker-contaniner-enviroment/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!