Docker重启后组成启动工作程序?

时间:2018-02-02 10:12:36

标签: laravel docker docker-compose

我使用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。感谢

2 个答案:

答案 0 :(得分:1)

您可以使用主管自动启动/重启服务。请参阅Laravel文档:

https://laravel.com/docs/5.5/queues#supervisor-configuration

我使用主管来管理Horizo​​n队列工作。

Example config from the docs:

[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或类似的流程管理器。

Run supervisor on startup

Manage Docker as non root user

pm2 is another popular process manager

答案 1 :(得分:0)

您需要在入口点脚本中集成php artisan queue:work命令。

参考 - https://docs.docker.com/config/containers/multi-service_container/