我是在Docker上运行Laravel调度程序的新手。所以我发现很难在Dockerfile文件中运行多个命令(php -S localhost:8000 -t public
和php artisan schedule:work
)。请帮助,我需要做什么才能成功运行scheduler,因为我也将它移动到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
发布于 2021-11-27 04:12:13
显然,您需要另一个带有supervisord的Dockerfile来运行调度程序。
不推荐使用内置的php服务器进行生产。所以我建议你有3个Dockerfile
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"]
https://stackoverflow.com/questions/70080509
复制