我试图使用以下运行命令在一个文件中更改多个配置项,该文件是现有Docker映像的一部分:
RUN sed --in-place '/start_rpc:/ s/false/true/g' /etc/cassandra/cassandra.yaml &&\
sed --in-place '/broadcast_rpc_address:/ s/172.17.0.2/192.168.1.248/g' /etc/cassandra/cassandra.yaml &&\
sed --in-place '/listen_address:/ s/172.17.0.2/192.168.1.248/g' /etc/cassandra/cassandra.yaml &&\
sed --in-place '/seeds:/ s/172.17.0.2/192.168.1.248/g' /etc/cassandra/cassandra.yaml 我确信多个sed命令是可以的,因为我可以在主机的控制台上运行它们,并实现我试图执行的4项更改。
docker build不显示任何错误,实际上,它生成一个新的映像。但是,当我运行容器并登录到它时,我可以看到四个替换中的第一个发生了。
我已经尝试过几种组合,包括一个化合物sed,例如:
RUN sed --in-place '/start_rpc:/ s/false/true/g; /broadcast_rpc_address:/ s/172.17.0.2/192.168.1.248/g; /listen_address:/ s/172.17.0.2/192.168.1.248/g; /seeds:/ s/172.17.0.2/192.168.1.248/g' /etc/cassandra/cassandra.yaml还有四个单独的运行命令。在所有情况下,结果都是一样的:start_rpc被更改为true,但其他IP地址没有被更改。
有没有人知道这里可能出了什么问题,如果是的话,为什么docker build没有报告有用的东西(最好失败)?
发布于 2022-03-12 14:29:37
这些问题的答案可以找到here,但是简单地说,一旦容器启动,就会运行额外的脚本来完成Cassandra和IP地址的设置,这是典型的配置类型,只有在容器启动后才能发现。
https://stackoverflow.com/questions/71429581
复制相似问题