使用
1 2 3 4
| # 添加环境变量 export myname=pangxieke # 查看 env | grep myname
|
使用
1 2 3
| echo $myname # 注意单引号包裹的时候代表是字符串 echo "$myname"
|
通过envsubst用环境变量替换掉了字符串$myname
1
| echo '$myname' | envsubst
|
进阶使用
新建一个测试文件echo '我的名字=$myname' > one
将one文件的内容输入到envsubst envsubst '$myname' < one
将内容输出到two文件中envsubst '$myname' < one > two
, 查看cat two
常见应用
新建.env文件
创建中间文件, source.template 方便查看并将defalut.conf置空
cp defalut.conf source.template
注意这里中间文件不要用.conf
结尾 会被nginx加载
echo "" > defalut.conf
将defalut.conf
内容清空
source.template
1 2 3 4 5 6 7 8 9 10 11 12
| upstream index { server xx.xx.xx.xx:${PORT}; } server { listen 80; charset utf-8; server_name 127.0.0.1; location / { proxy_pass http://index/test; } }
|
修改docker-compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| version: "3" services: nginx: restart: always image: daocloud.io/library/nginx:1.13.1 container_name: test-nginx ports: - 81:80 volumes: - /home/tangys/local/docker/nginxtest/conf.d:/etc/nginx/conf.d environment: PORT: # 默认读取到.env的配置 command: - /bin/bash - -c - "envsubst \ '$$PORT' \ # 这里的PORT是容器内的PORT环境变量 < /etc/nginx/conf.d/source.template \ # 中间文件内容读出 并通过envsubst来替换$PORT > /etc/nginx/conf.d/default.conf \ # 全部输入到default.conf && exec nginx -g 'daemon off;'"
|
查看defalut.conf,可以看到端口号已经被填写
1 2 3 4 5 6 7 8 9 10 11 12
| upstream index { server 192.168.0.85:9999; } server { listen 80; charset utf-8; server_name 127.0.0.1; location / { proxy_pass http://index/test; } }
|
修改 .env
文件的配置 可以动态切换接口
原文
https://www.codeleading.com/article/27874801193/
https://www.linux-man.cn/command/envsubst/