天天看点

如何给docker nginx中动态注入变量1.前置知识2.项目中使用

1.前置知识

  • CMD 指定容器默认执行的命令
#  exec 形式,推荐
CMD ["executable","param1","param2"]
CMD ["可执行命令", "参数1", "参数2"...]

# 作为ENTRYPOINT的默认参数
CMD ["param1","param2"]
           
  • envsubst 用shell格式字符串中的值替换环境变量。要替换的变量应位于 v a r 或 {var}或 var或var格式。
# 用空格分隔的列表,替换输入文件中的环境变量:
envsubst '{{$USER $SHELL $HOME}}' < {{path/to/input_file}}
           

2.项目中使用

  • a. nginx配置
server {
       listen       80;
       server_name  127.0.0.1;

       charset utf-8;
       
       location ^~ /aaa {
         alias /usr/share/nginx/html;
         index  index.html index.htm;
         try_files $uri $uri/ /index-${LOCALE_LANGUAGE}.html;
       }
}

           
  • b.dockerfile配置
FROM nginx:1.17.3-alpine

COPY ./nginx.conf /etc/nginx/conf.d/default.conf.template

EXPOSE 80

ENTRYPOINT [ "/bin/sh", "-c" ]
CMD ["envsubst '$LOCALE_LANGUAGE' < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"]

           

注:变量存在文件和被替代文件名字不能一样