我使用docker compose来管理使用laravel的web中的docker镜像。这是我的docker-compose.yml:
version: "3"
services:
api:
image: nginx:latest
ports:
- "5556:80"
volumes:
- .:/usr/api/
- ./site.conf:/etc/nginx/conf.d/site.conf
- /usr/api/vendor
links:
- app
restart: unless-stopped
app:
build:
context: .
dockerfile: php.dockerfile
tty: true
volumes:
- .:/usr/api/
- /usr/api/vendor
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
restart: unless-stopped
上面的配置会在服务器重启时自动运行docker。我的问题是如何在服务器重启时自动运行worker作业。现在,我使用命令docker-compose exec app php artisan queue:work手动运行worker。感谢
答案 0 :(得分:1)
您可以使用主管自动启动/重启服务。请参阅Laravel文档:
https://laravel.com/docs/5.5/queues#supervisor-configuration
我使用主管来管理Horizon队列工作。
[program:horizon]
process_name=%(program_name)s
command=php /home/forge/app.com/artisan horizon
autostart=true
autorestart=true
user=forge
redirect_stderr=true
stdout_logfile=/home/forge/app.com/horizon.log
或者,如果您使用Linux,则可以单独使用systemd或类似的流程管理器。
答案 1 :(得分:0)
您需要在入口点脚本中集成php artisan queue:work
命令。
参考 - https://docs.docker.com/config/containers/multi-service_container/