我正在使用基于该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 协同工作?
我的参考资料:
答案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