我希望能够使用cron在一个小时内在容器服务中运行一个简单的bash脚本。我正在通过docker-compose
和自定义Dockerfile使用Alpine Linux生成基于php-fpm的映像,我希望在该映像上也可以运行crond
-除非我不能。
一旦在容器上执行ps aux | grep cron
,就什么都不返回。
据我了解,通常的Linux启动过程在Docker容器中不存在-很好-那么我如何自动启动crond
? /etc/periodic/
下的目录是自动创建的,因此我不理解为什么消耗这些目录的适用进程也没有运行。
我曾尝试在docker-compose.yml
中创建一个专用的服务定义,该定义实际上是有效的,但每小时运行的shell脚本需要访问在different容器中运行的php二进制文件,因此这不可行解决方案。
如果我将其装入容器并运行rc-service crond start
,我会得到这个-但它永远不会“完成”:
/var/www/html # rc-service crond start
* WARNING: crond is already starting
#> docker --version
Docker version 19.03.8, build afacb8b7f0
#> docker-compose --version
docker-compose version 1.23.2, build 1110ad01
我需要可以放入Dockerfile
或docker-compose.yml
文件的解决方案。
Dockerd在Ubuntu Xenial FWIW上运行。
要运行cronjob容器(Alpine),您需要确保docker容器的命令是
exec crond -f
如果您要将其添加到docker文件中
CMD ["exec", "crond", "-f"]
您可能还需要在运行上述命令之前更新玉米文件