Docker Compose部署WordPress时WP-CLI报数据库连接错误
问题场景
使用如下docker-compose配置搭建WordPress运行环境:
version: '2' services: php: image: wordpress:5.5-php7.4-apache volumes: - ~/.composer-docker/cache:/root/.composer/cache:delegated - ./htdocs/:/var/www/html:delegated ports: - '80:80' networks: - my-network wpcli: image: wordpress:cli-2-php7.4 user: xfs depends_on: - db - php volumes: - ./htdocs:/var/www/html environment: WORDPRESS_DB_USER: user WORDPRESS_DB_PASSWORD: password db: image: mysql:5.7 restart: always environment: - DB_CONNECTION=mysql - DB_HOST=db:3306 - MYSQL_DATABASE=mds - MYSQL_USER=user - MYSQL_PASSWORD=password - MYSQL_ROOT_PASSWORD=password ports: - '3306:3306' expose: - '3306' volumes: - my-db:/var/lib/mysql #volumes: # - ~/mysql:/var/lib/mysql networks: - my-network composer_installation: container_name: composer_installation image: composer:1.10.19 command: ["composer", "install"] volumes: - ./htdocs/:/app volumes: my-db: networks: my-network: driver: bridge
当前环境运行状态:
- php、mysql、wordpress服务均运行正常
- 宿主机可通过数据库客户端使用
0.0.0.0:3306正常连接数据库
调用wp-cli时返回如下错误:
Error: Error establishing a database connection.
故障原因
故障由两处配置缺失导致:
- wpcli服务未加入
my-network桥接网络,与db服务不在同一网络平面,无法通过服务名db解析到数据库容器的内网地址 - wpcli服务的环境变量未配置数据库地址、数据库名称参数,无法生成正确的数据库连接配置
修复方案
- 编辑docker-compose.yml文件,修改wpcli服务配置段,补全网络配置和缺失的数据库连接环境变量,修改后的wpcli配置如下:
wpcli: image: wordpress:cli-2-php7.4 user: xfs depends_on: - db - php volumes: - ./htdocs:/var/www/html environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: user WORDPRESS_DB_PASSWORD: password WORDPRESS_DB_NAME: mds networks: - my-network
- 保存配置后,在docker-compose.yml所在目录执行以下命令重建wpcli容器:
docker-compose up -d --force-recreate wpcli
- 容器重建完成后,再次调用wp-cli即可正常连接数据库执行操作。
内容的提问来源于stack exchange,提问作者open-ecommerce.org
相关产品推荐
相关产品推荐

