我正在运行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)