首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker文件运行多个sed命令

Docker文件运行多个sed命令
EN

Stack Overflow用户
提问于 2022-03-10 19:13:20
回答 1查看 288关注 0票数 0

我试图使用以下运行命令在一个文件中更改多个配置项,该文件是现有Docker映像的一部分:

代码语言:javascript
复制
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,例如:

代码语言:javascript
复制
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没有报告有用的东西(最好失败)?

EN

回答 1

Stack Overflow用户

发布于 2022-03-12 14:29:37

这些问题的答案可以找到here,但是简单地说,一旦容器启动,就会运行额外的脚本来完成Cassandra和IP地址的设置,这是典型的配置类型,只有在容器启动后才能发现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71429581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档