Docker构建输出脚本从dockerfile运行

时间:2018-11-12 14:48:22

标签: docker jenkins

我正在运行

docker build -t $NAME -f Dockerfile.test .

命令。

在我的Dockerfile.test中,我已经结束了(我正在复制某些内容以使所有内容正常工作)

CMD["bin/bash", "-c", "bash /run-script.sh && bash /run-another-script.sh"]

当我在Jenkins中查看构建阶段时,我只能看到一切顺利,

CMD /bin/bash -c bash /run-script.sh && bash /run-another-script.sh

已执行,并且由于我正在这些脚本中运行声纳扫描,因此我可以在声纳中看到发生了扫描(没关系)。

但是由于我正在脚本中运行PHP单元测试,所以我对此部分感到有些怀疑,因为在Jenkins中,这非常快地完成了(在我的本地计算机上,运行带有覆盖率报告的单元测试大约需要20分钟) ,失败或无法正常运行。

因此,我想查看这些脚本(run-script.shrun-another-script.sh)的输出,以确保一切正常。

我听说docker不会显示在终端中写/删除行的脚本的输出,所以这可能就是原因(我猜是ofc)。

有没有办法显示输出?

1 个答案:

答案 0 :(得分:1)

我认为您在混淆RUNCMD

RUN-命令在构建(docker build)期间执行,CMD-命令在启动容器(docker run)时执行。

可以肯定的是我写了一个小测试:

1)使用CMD

$ docker build -t cmdtest -<<EOF
FROM centos:7

RUN echo "echo script1" > script1.sh
RUN echo "echo script2" > script2.sh

CMD ["bin/bash", "-c", "bash /script1.sh && bash /script2.sh"]
EOF

不打印任何内容,因为未执行。但是,打印位置为docker run

$ docker run cmdtest
> script1
> script1

2)使用RUN

$ docker build -t cmdtest -<<EOF
FROM centos:7

RUN echo "echo script1" > script1.sh
RUN echo "echo script2" > script2.sh

RUN ["bin/bash", "-c", "bash /script1.sh && bash /script2.sh"]
EOF

> Sending build context to Docker daemon 2.048 kB
> ...
> Step 4/4 : RUN bin/bash -c bash /script1.sh && bash /script2.sh
> ---> Running in 7aab2725ed25
>
> script1
> script2
> ---> 8ca71d1c67e8

在构建时打印。