【问题标题】:Docker Laravel Redis - Queue initialization problemDocker Laravel Redis - 队列初始化问题
【发布时间】:2021-12-03 04:55:27
【问题描述】:

Docker yml。我编辑了文件中的 laravel 和 redis 容器。两个容器都工作正常。但是,当我不在外部运行 artisan queue:work 命令时,队列不会启动。我不知道如何解决这种情况。另外,我对 supervisiord 文件进行了必要的设置,该文件位于 laravel 帆的笔记中。

我是 Docker 的初学者。抱歉,如果这是一个错误或错误的问题。

Docker Yml

# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./docker/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/app
        container_name: LaravelTest
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-8000}:8000'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
            - redis
    mysql:
        image: 'mysql:8.0'
        container_name: MySql
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_USER: '${DB_USERNAME}'
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - "/var/lib/mysql"
        networks:
            - sail
    phpmyadmin:
        image: 'phpmyadmin:latest'
        container_name: PhpMyAdmin
        ports:
            - 8081:80
        environment:
            PMA_HOST: mysql
            MYSQL_ROOT_USER: '${DB_USERNAME}'
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_DATABASE: '${DB_DATABASE}'
        depends_on:
            - mysql
        networks:
            - sail
    redis:
        image: 'redis:alpine'
        container_name: Redis
        ports:
            - '${FORWARD_REDIS_PORT:-6379}:6379'
        volumes:
            - 'sailredis:/data'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "redis-cli", "ping"]
            retries: 3
            timeout: 5s
networks:
    sail:
        driver: bridge
volumes:
    sailmysql:
        driver: local
    sailredis:
        driver: local

【问题讨论】:

  • sail build --no-cache 命令为我解决了这个问题。必须为主管文件中的更改购买新版本。

标签: laravel docker redis queue laravel-sail


【解决方案1】:

您始终需要运行artisan queue:work 命令。但在生产模式下,它不会那样工作。正如 Laravel 的文档中提到的here,您需要使用诸如Supervisor 之类的进程监视器来确保队列工作者始终在后台运行并且不会停止运行。

【讨论】:

  • 你说的没错,所以我编辑了项目中的supervisor文件,根据需要添加命令。但是,即使我举起容器,此命令也不起作用。我认为我的错误是没有将 docker yml 与主管文件相关联。你觉得我能做些什么呢?如何挂载 docker 和 supervisor 文件
  • 您使用的是 Sail 还是您自己的自定义 docker 镜像?
  • 我正在使用 Laravel 帆
  • 感谢您的帮助,我的朋友 Mahmood Moradian。我发现了问题并修复了它。我正在用帆跳过建筑。为了运行对主管文件所做的更改,绝对有必要进行构建。为其他开发者构建代码:sails build --no-cache
猜你喜欢
  • 2016-04-14
  • 2018-11-30
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
  • 2017-09-09
  • 2020-12-25
  • 1970-01-01
相关资源
最近更新 更多