Dockerfile不会替换文本,但是命令行会替换文本,可能是错误?

时间:2018-12-13 22:13:22

标签: bash docker sed dockerfile

我有一个简单的Dockerfile,该文件复制了我使用sed替换某些变量的模板。非常简单。看起来非常可行,并且从我所见/读到的所有意图和目的来看,它应该做到这一点。

COPY /my-dir/my-textfile.conf /to/my/docker/path.conf
RUN sed -i s:TEXTTOREPLACE:my-new-text:g /to/my/docker/path.conf

然后我先运行docker build....,然后运行docker run ... bash 然后我cat我的文件,TEXTTOREPLACE仍然在那里。

在bash中运行相同的sed命令,它没有问题。

有什么想法吗?我在做什么错/看不到?

谢谢! 按请求进行编辑:基础图像为debian:7.11,工作站为MAC OSX

1 个答案:

答案 0 :(得分:2)

回顾一下。

  • 我的工作目录中有文件my-textfile.conf。其内容为:
  

我需要用我的新文本更改TEXTTOREPLACE

  • 我的测试系统是运行Docker 18.09.0版的Ubuntu Linux 16.04,构建 4d60db4。
  • 这是Dockerfile

FROM debian:7.11 COPY my-textfile.conf /tmp/path.conf RUN sed -i s:TEXTTOREPLACE:my-new-text:g /tmp/path.conf

我运行以下命令:

docker build -t mytestimage .
docker run -ti -d --name mytestcontainer mytestimage
docker exec -ti mytestcontainer /bin/bash

然后,在容器内,运行:

cat /tmp/path.conf

我得到这个结果:

  

我需要用我的新文本更改我的新文本

所以看来它能按预期工作。