如何在不损害 Apache 服务的情况下在新映像上配置 cron 启动?

如何在不损害 Apache 服务的情况下在新映像上配置 cron 启动?

我正在使用基于该php:7.3-apache-buster图像的 cron 创建一个新的图像。

镜像的构建很顺利。容器也创建成功,状态为“Up”。但是,当我在浏览器中输入时,http://localhost:8082没有显示任何 Apache 页面。Apache 服务是从php:7.3-apache-buster镜像中继承的。

在我的Dockerfile中,最后一行是CMD cron && tail -f /var/log/cron.log。我相信正是这一行产生了问题。

如果我使用命令进入容器docker exec -it cont-mysite-01 /bin/bash并运行命令service apache2 start,Apache 将正常启动。

我不明白什么?

如何构建一个映像,使基础映像中的 Apache 与新映像中的 Cron 协同工作?

我的参考资料:

https://github.com/Ekito/docker-cron/blob/master/Dockerfile

https://hub.docker.com/_/php

答案1

我解决问题的方法如下:

CMD cron && tail -f /var/log/cron.log我从 Dockerfile 中删除了该行。

然后我添加了这一行RUN sed -i 's/^exec /service cron start\n\nexec /' /usr/local/bin/apache2-foreground

使用映像创建容器后,运行命令检查 Apache2 和 Cron:

docker exec -it cont-mysite-01 service apache2 status

docker exec -it cont-mysite-01 service cron status

对我有帮助的链接:

http://www.idein.it/joomla/14-docker-php-apache-with-crontab

相关内容