我如何在Docker容器中的Alpine上获得crond的自动启动功能?

问题描述 投票:0回答:1

我希望能够使用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

我需要可以放入Dockerfiledocker-compose.yml文件的解决方案。

Dockerd在Ubuntu Xenial FWIW上运行。

docker-compose cron alpine
1个回答
0
投票

要运行cronjob容器(Alpine),您需要确保docker容器的命令是

exec crond -f

如果您要将其添加到docker文件中

CMD ["exec", "crond", "-f"]

您可能还需要在运行上述命令之前更新玉米文件

© www.soinside.com 2019 - 2024. All rights reserved.