如何在 Docker 上运行 Laravel (Lumen) 调度程序

Posted

技术标签:

【中文标题】如何在 Docker 上运行 Laravel (Lumen) 调度程序【英文标题】:How to run Laravel (Lumen) Scheduler on Docker 【发布时间】:2022-01-01 22:10:04 【问题描述】:

我是在 Docker 上运行 Laravel 调度程序的新手。所以我发现很难在 Dockerfile 中运行多个命令(php -S localhost:8000 -t publicphp artisan schedule:work)。请帮忙,我需要做些什么才能成功运行调度程序,因为我还将把它移到 AWS。

这是我的 dockerfile

FROM php:7.4-fpm-alpine
RUN docker-php-ext-install mysqli pdo pdo_mysql

RUN apk --no-cache add \
php7 \
php7-mysqlnd \
php7-fpm \
php7-pdo \
php7-mbstring \
php7-xml \
php7-openssl \
php7-json \
php7-phar \
php7-zip \
php7-dom \
php7-session \
php7-zlib && \
php7 -r "copy('http://getcomposer.org/installer', 'composer-setup.php');" && \
php7 composer-setup.php --install-dir=/usr/bin --filename=composer && \
php7 -r "unlink('composer-setup.php');" && \
ln -sf /usr/bin/php7 /usr/bin/php && \
ln -s /etc/php7/php.ini /etc/php7/conf.d/php.ini

RUN set -x \
addgroup -g 82 -S www-data \
adduser -u 82 -D -S -G www-data www-data

COPY . /src
ADD .env.example /src/.env
WORKDIR /src
RUN chmod -R 777 storage


RUN composer install

CMD php -S localhost:8000 -t public

【问题讨论】:

【参考方案1】:

您显然需要另一个带有 supervisord 的 Dockerfile 来运行调度程序。

不建议使用内置的 php 服务器进行生产。所以我建议你有 3 个 Dockerfiles

FROM php:7.4-fpm-alpine
#...
FROM nginx:stable-alpine
# add conf file to fastcgi_pass to php container
FROM your-php-container:tag
RUN apk --no-cache add supervisor
# copy supervisor config file (with laravel scheduler ) to /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]

【讨论】:

以上是关于如何在 Docker 上运行 Laravel (Lumen) 调度程序的主要内容,如果未能解决你的问题,请参考以下文章

Docker 上 Laravel 的文件权限 - 无法编辑文件

如何使用 docker-compose 在 docker 容器中为 Laravel 环境安装 Behat?

使用Docker compose编排Laravel应用

本地主机拒绝使用 laravel 帆(Docker)连接

使用 docker-compose 在 Docker 中运行 laravel/lumen

在 docker 下运行 laravel 5 的错误