我有一个简单的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

最佳答案

只是回顾一下。

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


  • 我的测试系统是运行Docker版本18.09.0的Ubuntu Linux 16.04,构建
    4d60db4。
  • 这是Dockerfile
  • FROM debian:7.11COPY my-textfile.conf /tmp/path.confRUN 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
    

    我得到这个结果:



    因此,它似乎按预期工作。

    10-07 19:38
    查看更多