我有一个容器用于我的laravel应用程序与php:7.0.4-fpm作为基本图像 .

这是我的dockerfile:

FROM php:7.0.4-fpm

RUN apt-get update && apt-get install -y cron nano libmcrypt-dev \
    mysql-client libmagickwand-dev --no-install-recommends \
    && pecl install imagick \
    && docker-php-ext-enable imagick \
    && docker-php-ext-install mcrypt pdo_mysql

COPY . /var/www

ADD crontab /etc/cron.d/laravel-cron

RUN chmod 0644 /etc/cron.d/laravel-cron

RUN touch /var/log/cron.log

RUN /usr/bin/crontab /etc/cron.d/laravel-cron

RUN cron
  • Cron没有运行,我必须在容器中使用ssh来启动它 .

  • 当我手动启动它时,它适用于简单的事情,比如每分钟回复文本 . 但不适用于 php artisan schedule:run 命令 . 在日志中我看到:

运行预定命令:'/ usr / local / bin / php''artisan'错误:insert>'/ dev / null'2>&1

errors:insert 是我的任务的名称,但网站中没有任何更新 .

  • 这很奇怪,因为当我手动运行 php artisan schedule:run 命令时,它可以在网站上运行 .

所以我的问题是:如何使cron在docker容器上工作以执行php artisan schedule:run command?最好用dockerfile编写,而不是通过ssh手动编写 .

我也从容器中收到一条奇怪的消息:

ALERT: oops, unknown child (5094) exited with code 1.
Please open a   bug report (https://bugs.php.net).