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
吗?
谢谢!
答案 0 :(得分:0)
我最近在类似问题的 kind 中运行,因为容器是以“随机”顺序启动的。也许这是你的问题也不确定。
简而言之,这就是我的情况:
- 两个容器php-fpm
和mysql
。
- 运行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_on
(check here)和condition
(查看示例)。