我正在运行
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.sh
和run-another-script.sh
)的输出,以确保一切正常。
我听说docker不会显示在终端中写/删除行的脚本的输出,所以这可能就是原因(我猜是ofc)。
有没有办法显示输出?
答案 0 :(得分:1)
我认为您在混淆RUN
和CMD
。
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
在构建时打印。