目录

docker php-cron自启动设置

目录

有时我们需要在docker的php容器里开启定时任务,又不想每次都手动执行 service cron start, 我们可以把cron设置为运行容器时自动启用。

Dockerfile 同级目录新建一个脚本 entrypoint.sh 内容为

1
2
3
#!/bin/bash
/etc/init.d/cron start
exec "$@"

Dockerfile 内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
FROM php:7.4-fpm
Run apt-get update && apt-get install -y  \
        libfreetype6-dev libjpeg62-turbo-dev libpng-dev vim \
        cron libzip-dev zip \
        && docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \ 
        && docker-php-ext-install gd pdo_mysql mysqli zip exif \
        && docker-php-ext-configure zip \
        && docker-php-ext-enable mysqli exif \
        && mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \
        && mkdir -p /usr/src/php/ext/redis \
        && curl -L https://github.com/phpredis/phpredis/archive/5.3.0.tar.gz | tar xz -C /usr/src/php/ext/redis --strip 1 \
        && echo "redis" >> /usr/src/php-available-exts \
        && docker-php-ext-install redis 

COPY ./entrypoint.sh /
RUN chmod -R 755 /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

CMD ["php-fpm"]

说明 ENTRYPOINT相当于执行启动时的命令 最后要加上 CMD ["php-fpm"]