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;'"]
注:变量存在文件和被替代文件名字不能一样