如何在Dokerfile中创建新的ENTRYPOINT引发错误后退重启失败的容器

时间:2018-08-11 15:44:56

标签: docker

Dockerfile代码

FROM mysql:5.6

COPY entrypoint_v1.sh /entrypoint_v1.sh
RUN chmod +x /entrypoint_v1.sh
ENTRYPOINT ["/entrypoint_v1.sh"]

entrypoint_v1.sh

#!/bin/bash
mkdir "anyfolder"
cp index.php cron.php

如果我评论ENTRYPOINT [“ /entrypoint_v1.sh”]正常工作,但我想执行一些命令

2 个答案:

答案 0 :(得分:0)

看起来您的entrypoint_v1.sh脚本希望“ index.php”位于容器中,但是您尚未将其添加到Dockerfile中。因此它将无法找到该文件...

答案 1 :(得分:0)

之所以无法继续运行,是因为按照书面规定,您的入口点已退出,因此docker run结束了。 index.php在容器中不存在的事实无济于事,但是由于您没有在bash上运行-e,因此该错误实际上并没有杀死容器。此后entrypoint_v1.sh在脚本末尾直接退出时,容器结束。

但是,如果您要复制文件,这听起来像是您自己可以在Dockerfile中进行的操作。但是由于您正在考虑将php文件添加到mysql db容器中,因此尚不清楚您希望在此完成什么。

如果要在容器启动时运行某些程序,然后然后启动mysql ,则必须查看上游mysql:5.6 image's Dockerfile启动时的作用。查看该文件,可以通过将其添加到入口点来获得所需的内容:

exec /entrypoint.sh