我是码头工人的新手.我使用php:7-fpm图像设置了dockerfile.除了用于运行我的网站的这个图像,我想添加一个cron,以便能够执行常规任务.
我创建了一个cron里,把它放在正确的文件夹,并运行docker exec -ti myimage_php_1 /bin/bash再cron或者,如果我tail的日志文件,一切工作正常.但是在创建容器时我无法使用它,我不想显然手动启动cron.
根据我的理解,我需要在启动时使用CMD或ENTRYPOINT运行cron命令,但每次我这样做都会因为我覆盖CMD/ENTRYPOINT原始php:7-fpm图像的必要功能而停止我的网站工作.有没有办法触发cron命令并继续像以前一样使用php:7-fpm CMD/ENTRYPOINTs?
Rob*_*ert 11
方法#1
创建自定义entrypoint.sh,如下所示:
#!/bin/bash
cron -f &
docker-php-entrypoint php-fpm
Run Code Online (Sandbox Code Playgroud)
注意&,这意味着"发送到后台".
然后:
COPY ./entrypoint.sh /
ENTRYPOINT /entrypoint.sh
Run Code Online (Sandbox Code Playgroud)
方法#2
但是,有一种更复杂的安装方式supervisor,请参阅docs(docker中使用的恶魔管理器):
在Dockerfile中:
RUN apt-get update && apt-get install supervisor
COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
...
CMD ["/usr/bin/supervisord"]
Run Code Online (Sandbox Code Playgroud)
supervisord.conf
[program:cron]
command = cron -f
[program:php]
command = docker-php-entrypoint php-fpm
Run Code Online (Sandbox Code Playgroud)
一些故障排除命令
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7451 次 |
| 最近记录: |