使用ENTRYPOINT启用容器启动和停止的正确方法

时间:2016-10-27 16:01:35

标签: docker docker-compose

我正在使用Dockerfile构建自定义图像。显然,当我停止容器并再次启动它时,新的运行正常工作 - 它不会启动并保持退出0 的状态。

该图像由apache2和一组用于symfony web应用程序的php模块组成。

这就是Dockerfile结束

的方式
RUN a2enmod rewrite
CMD service apache2 restart
ENTRYPOINT ["/usr/sbin/apache2ctl"]
CMD ["-D", "FOREGROUND"]
EXPOSE 80

我看到容器通常使用docker-entrypoint.sh但不确定其中包含的内容及其扮演的角色。

1 个答案:

答案 0 :(得分:3)

入口点不应与您的容器无法重新启动有任何关系。您的问题很可能在其他地方,您需要查看容器中的日志进行调试。 ENTRYPOINT的输出也可能有助于查看容器文件系统中的更改。

如果未定义CMD,则泊坞窗默认运行ENTRYPOINT。如果定义了CMD,则/usr/sbin/apache2ctl -D FOREGROUND中的任何内容都将成为入口点脚本的cli参数。因此,在上面的示例中,它将使用docker run启动(或重新启动)容器。在CMD命令中的容器名称后附加的任何内容都将覆盖ENTRYPOINT的值。您可以使用docker run --entrypoint ...覆盖<table> <tr> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td colspan="2"> </td> <td rowspan="2"></td> </tr> </table> 的值。

有关详细信息,请参阅Docker's documentation on the entrypoint option