小编jef*_*ear的帖子

如何分配变量并使用sed替换Dockerfile中的配置文件内容?

我正在运行Dockerfile,但是,当我分配一个变量用于修改时遇到问题/etc/fail2ban/jail.local,其字符串内容为“PRIVATEIP”。

Dockerfile产生错误并停止。因为我不知道分配一个变量sed来修改特定文件中的字符串内容。

RUN IP=$(cat /root/ip_variable) | sed -i -r "s/PRIVATEIP/${IP}/g" /etc/fail2ban/jail.local
 ---> Running in 1e78ef4318ab
Run Code Online (Sandbox Code Playgroud)

如果有任何其他方法来处理这个问题,请告诉我。

================================================== ==========================

在 2018/7 月 11 日为以下替代方法添加更多解释:

我在 Dockerfile 上添加了一些命令行。目的和以前一样。我或者使用 echo 编写如下脚本。但是,这很奇怪。为什么在“sed”这个命令的“s”之后的同伴字符“/”会被遗漏?(如果有什么方法可以在代码输出的字符上加高亮或标记,谢谢。)如果这件事解决了,我想我可以关闭这个问题了。

Step 64/73 : RUN echo "#!/bin/bash\nexport PRIVATEIP=$(cat /home/ip_variable)\nsed -i -r \"s/\bPRIVATEIP\b/\${PRIVATEIP}/g\" /etc/fail2ban/jail.local\nsed -i -r \"s/\bPRIVATEIP\b/\${PRIVATEIP}/g\" /etc/opendkim/TrustedHosts" > /home/start_script.sh
 ---> Running in bbff59f82475
Removing intermediate container bbff59f82475
 ---> 0068d9d600ff
Step 65/73 : RUN cat /home/ip_variable
 ---> Running in faeb4bb1a6ba
172.17.0.2/16
Removing intermediate container faeb4bb1a6ba
 ---> f6cc35fd01e5 …
Run Code Online (Sandbox Code Playgroud)

sed environment-variables docker

6
推荐指数
2
解决办法
3万
查看次数

标签 统计

docker ×1

environment-variables ×1

sed ×1