很难解释我需要什么,但我已经尽力了。
在entrypoint.sh文件中,我写了以下几行:
if [ ! -z "${BROTLI_COMPRESS_Vals}" ]; then
sed -i
-e '/LoadModule .*mod_brotli.so/ s/^#*/#/'
/config/default.conf
&& echo AddOutputFilterByType BROTLI_COMPRESS $BROTLI_COMPRESS_Vals >> /config/default.conf
fi;
default.conf文件只包含以下行:
#LoadModule brotli_module modules/mod_brotli.so
然后当我运行这个命令时:
docker-compose run -e BROTLI_COMPRESS_Vals="text/plain" mycontainer
然后是default.conf:
LoadModule brotli_module modules/mod_brotli.so
AddOutputFilterByType BROTLI_COMPRESS text/plain
未注释如您所见的第一行,并添加了一行当我运行docker compose-run命令时设置的内容
此外,-e BROTLI_COMPRES_Vals是可选的(如果用户写,那么按照我说的去做,如果不是default.conf有一行注释(
我该怎么做?
这样?
#!/usr/bin/env bash
# BROTLI_COMPRESS_Vals="text/plain"
replacement="AddOutputFilterByType BROTLI_COMPRESS $BROTLI_COMPRESS_Vals"
target_file="/config/default.conf"
if [ -n "${BROTLI_COMPRESS_Vals}" ]; then
replacement="$(echo "$replacement" | sed 's/[][\/.^$+*?(){}|]/\&/g')"
sed -i "0,/^#(.*)$/s//1n${replacement}/" "$target_file"
fi
$ cat config.txt
#LoadModule brotli_module modules/mod_brotli.so
#LoadModule brotli_module modules/mod_brotli.so
#LoadModule brotli_module modules/mod_brotli.so
$ ./shell.sh
LoadModule brotli_module modules/mod_brotli.so
AddOutputFilterByType BROTLI_COMPRESS text/plain
#LoadModule brotli_module modules/mod_brotli.so
#LoadModule brotli_module modules/mod_brotli.so
请确保先备份您的文件。