连接到Docker MySQL容器时的凭据错误

时间:2017-02-10 20:06:14

标签: docker

Docker的新手,我使用laradock使用Craft CMS项目设置环境。我能够安装和设置它,但是当我尝试连接到laradock从docker-compose.yml文件创建的MySQL容器时,我遇到了问题。

这是我docker-compose.yml

中与数据库相关的部分
mysql:
    build:
        context: ./mysql
        args:
            - MYSQL_DATABASE=homestead
            - MYSQL_USER=homestead
            - MYSQL_PASSWORD=secret
            - MYSQL_ROOT_PASSWORD=root
    volumes:
        - mysql:/var/lib/mysql
    ports:
        - "3306:3306"

在我的craft/config/db.php文件中,我有以下设置:

return array(     
  '.dev' => array(
    'tablePrefix' => 'craft',
    'server' => 'mysql',
    'database' => 'homestead',
    'user' => 'homestead',
    'password' => 'secret',
  ),
);

但是,我收到Craft can’t connect to the database with the credentials in craft/config/db.php错误。

我的问题是 - 当docker创建MySQL容器时,我假设它使用docker-compose.yml文件中的凭据来创建并允许访问该数据库。如果是这样,只要我的容器正在运行且我的db.php文件中的凭据与docker-compose.yml文件中的凭据匹配,就不应该连接?

如果我想更新MySQL容器中的凭据,我可以简单地更新两个文件中的值并运行docker-compose up -d mysql吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我最近在类似问题的 kind 中运行,因为容器是以“随机”顺序启动的。也许这是你的问题也不确定。

简而言之,这就是我的情况:   - 两个容器php-fpmmysql。   - 运行docker-compose up -d --build --no-cache构建除php-fpm之前的所有内容,然后mysql正在做一些事情以获得服务准备   - php-fpm应用程序无法连接到MySQL服务器,因为尚未就绪

该解决方案使用新的Docker Compose版本并在docker-compose.yml上使用2.1。这是我的工作示例:

version: '2.1'
services:
    php-fpm:
        build:
            context: docker/php-fpm
        depends_on:
            db:
                condition: service_healthy
    db:
        image: mariadb
        healthcheck:
            test: "exit 0"
        environment:
            MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
            MYSQL_DATABASE: ${MYSQL_DATABASE}
            MYSQL_USER: ${MYSQL_USER}
            MYSQL_PASSWORD: ${MYSQL_PASSWORD}

技巧:depends_oncheck here)和condition(查看示例)。