我正在使用这个 docker 组成的文件设置,部分与拉威尔赛尔,并由我调整.我 for each 数据库设置了一个主机,因此在使用主应用程序设置基本的MySQL,Redis之后,又添加了两个主机.

# For more information: https://laravel.com/docs/sail
version: '3'
services:
    app.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
        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'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - 'sailmysql:/var/lib/mysql'
    mysql_publish:
        image: 'mysql:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3307}:3307'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_DATABASE: '${DB_PUBLISH_DATABASE}'
            MYSQL_USER: '${DB_PUBLISH_USERNAME}'
            MYSQL_PASSWORD: '${DB_PUBLISH_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - 'sailmysql:/var/lib/mysql_publish'
    mysql_backup:
        image: 'mysql:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3308}:3308'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_BACKUP_PASSWORD}'
            MYSQL_DATABASE: '${DB_BACKUP_DATABASE}'
            MYSQL_USER: '${DB_BACKUP_USERNAME}'
            MYSQL_PASSWORD: '${DB_BACKUP_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - 'sailmysql:/var/lib/mysql_backup'
        networks:
            - sail
        healthcheck:
          test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
          retries: 3
          timeout: 5s
    redis:
        image: 'redis:alpine'
        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

我更改了每个MySQL数据库的主机,因此我运行三个容器.我还根据设置更改了库,因为如果没有设置,似乎会导致问题.

断断续续

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed

错误或者我可以连接并拥有

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'backup.migrations' doesn't exist (SQL: select `migration` from `migrations` order by `batch` asc, `migration` asc)

作为最后一个运行SAIL ARTIANN Migrate--DATABASE=MYSQL_BACKUP的人,我也不太理解这一点,因为我们应该有备份数据库的迁移表.

我的问题是:

为多个数据库设置卷的常用方法是什么,我的可以吗? 您通常如何为多个数据库主机设置端口,我的设置正确吗?

我需要帮助来解决我的问题

推荐答案

您需要创建一个SQL文件并将它们链接到docker-compose.yml文件中

示例:SQL文件:创建数据库并允许帐户具有控制该帐户的权限

CREATE DATABASE IF NOT EXISTS `test_database`;

GRANT ALL PRIVILEGES ON  `test_database`.* TO 'sail'@'%';

docker-compose:我将文件放在目录project/docker/8.0/中,在卷中,我只链接了文件.

    mysql:
        image: 'mysql:8.0'
    volumes:
            - './docker/8.0:/docker-entrypoint-initdb.d'
    ........others configuration

Php相关问答推荐

PHP cUrl扩展与v8.2.12更新损坏

自定义通知在Woocommerce我的帐户自定义端点页面上不起作用

Laravel:让所有用户在一年中的特定月份休息几天

使用.htaccess将任何路由重定向到文件

在内部API请求之后,在响应客户端之前,是否忘记了PHP中的Header()?

在没有symfony应用程序的情况下使用安全Bundle 包时,缺少配置构建器类

PHP -多维数组到一维数组

将日期数组排序为年->;月

根据发货类别在WooCommerce产品页面中显示快捷代码

在WooCommerce管理中为订单项目添加自定义字段价格值

PHP Match如何准确判断条件?

WooCommerce 以编程方式添加的费用不会持续存在

Woocommerce 中为空时隐藏显示变体自定义字段数据

使用 phpseclib 验证 RSA-PSS

将图像作为 PHP post 响应发送到浏览器

如何使用不同的方法编写嵌套连接查询并将两列连接成一列在 laravel 查询生成器中

php/html OnSubmit 禁用输入类型提交未给出预期结果

Laravel 测试 assertJsonMissing 不适用于唯一的键.为什么?

PHP 自动函数参数和变量

无法在 Laravel 10 中安装 jenssegers/mongodb