让cron在php上运行:7-fpm图像

时间:2017-05-26 09:59:10

标签: php docker

我是码头工人的新手。我使用php:7-fpm图像设置了dockerfile。除了用于运行我的网站的图像之外,我还想添加一个cron来执行常规任务。

我已经创建了一个cron,将它放在正确的文件夹中,然后运行SlackCommands:${stageVariables.lambdaAlias}然后docker exec -ti myimage_php_1 /bin/bash或者如果我cron,那么日志文件一切正常。但是在创建容器时我无法使用它,我不想显然手动启动cron。

根据我的理解,我需要使用tailCMD在启动时运行ENTRYPOINT命令,但每次执行此操作都会因为我覆盖而停止我的网站工作原始php的必要cron功能:7-fpm图像。有没有办法触发cron命令并继续像以前一样使用php:7-fpm CMD/ENTRYPOINT s?

1 个答案:

答案 0 :(得分:10)

方法#1

创建自定义entrypoint.sh,如下所示:

#!/bin/bash

cron -f &
docker-php-entrypoint php-fpm

注意&,表示"发送到背景"。

然后:

COPY ./entrypoint.sh /
ENTRYPOINT /entrypoint.sh

方法#2

但是,有一种更复杂的方法是安装supervisor,请参阅docs(码头工具中使用的恶魔经理):

在Dockerfile中:

RUN apt-get update && apt-get install supervisor
COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
...
CMD ["/usr/bin/supervisord"]

supervisord.conf

[program:cron]
command = cron -f

[program:php]
command = docker-php-entrypoint php-fpm

一些故障排除命令:

docker exec <container-id> supervisorctl status
docker exec <container-id> supervisorctl tail -f php
docker exec <container-id> supervisorctl tail -f cron
docker exec <container-id> supervisorctl restart php