如何在 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 public
和php 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?