我是码头工人的新手。我使用php:7-fpm图像设置了dockerfile。除了用于运行我的网站的图像之外,我还想添加一个cron来执行常规任务。
我已经创建了一个cron,将它放在正确的文件夹中,然后运行SlackCommands:${stageVariables.lambdaAlias}
然后docker exec -ti myimage_php_1 /bin/bash
或者如果我cron
,那么日志文件一切正常。但是在创建容器时我无法使用它,我不想显然手动启动cron。
根据我的理解,我需要使用tail
或CMD
在启动时运行ENTRYPOINT
命令,但每次执行此操作都会因为我覆盖而停止我的网站工作原始php的必要cron
功能:7-fpm图像。有没有办法触发cron命令并继续像以前一样使用php:7-fpm CMD/ENTRYPOINT
s?
答案 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