如何使用 sed 命令与 docker run 在 nginx docker 映像中替换 .conf 文件中的文本?

我的 entrypoint.sh 如下所示:

sed -i 's/HOST_NAME/'"$HOST_NAME"'/g' /usr/local/openresty/nginx/conf/conf.d/CONFIG_FILE.conf

exec "$@"

CONFIG_FILE.conf 如下所示:

upstream gunicorn {
    server $HOST_NAME;
}

我的 docker run 命令如下所示:

docker run -e HOST_NAME=http://cnn.com sid:latest cat /usr/local/openresty/nginx/conf/conf.d/CONFIG_FILE.conf

我想通过 docker run 传递 cnn.com 来替换 CONFIG_FILE.conf 中的 $HOST_NAME。如果有帮助,我将不胜感激。我是新手,请您谅解我可能犯的小错误。

谢谢。

点赞
用户2614364
用户2614364

你可以在 sed 中使用除 / 以外的其它分隔符,例如 # :

sed -i 's#$HOST_NAME#'"$HOST_NAME"'#g' /usr/local/openresty/nginx/conf/conf.d/CONFIG_FILE.conf
2017-04-05 21:18:19