Docker部署WordPress报Error establishing a database connection错误
配置错误点与修复方案
1. 缺失数据库连接地址配置
WordPress服务的环境变量未指定数据库服务地址,需添加WORDPRESS_DB_HOST字段指向MariaDB服务名+端口:
WORDPRESS_DB_HOST: db:3306
2. MariaDB未创建对应普通用户
你配置WordPress使用wordpress用户访问数据库,但MariaDB的环境变量仅配置了root用户密码和目标库,没有创建wordpress普通用户并授权,需要在MariaDB的environment下新增两个参数:
MYSQL_USER: wordpress MYSQL_PASSWORD: mbA2tU9RyA5r@U
3. 可选:避免启动时序问题
depends_on仅保证服务启动顺序,不会等待MariaDB完全初始化完成后再启动WordPress,首次部署时容易出现数据库未就绪就启动WordPress的情况,你可以首次启动时先单独启动db服务,等待1分钟左右再启动wordpress服务,或者给MariaDB服务添加健康检测逻辑。
4. 冗余错误(不影响数据库连接但会导致卷挂载异常)
WordPress服务中挂载的卷名为sbabaya,但底部全局volumes声明中没有对应定义,要么将挂载值改为wordpress:/var/www/html,要么在全局volumes下新增sbabaya:声明。
修正后的完整配置
version: "3.9" services: wordpress: depends_on: - db image: wordpress:latest container_name: wordpress restart: unless-stopped ports: - "91:80" security_opt: - no-new-privileges:true environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: mbA2tU9RyA5r@U WORDPRESS_DB_NAME: wordpress volumes: - wordpress:/var/www/html mariadb: image: mariadb:latest container_name: db restart: always environment: MYSQL_ROOT_PASSWORD: mbA2tU9RyA5r@U MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: mbA2tU9RyA5r@U volumes: - "db:/var/lib/mysql" logging: driver: "json-file" options: max-size: "10Mb" max-file: "5" volumes: wordpress: db:
部署注意事项
修改配置后先执行docker-compose down -v清理之前创建的错误数据库卷(会清空已有的测试数据,生产环境谨慎操作),再重新执行docker-compose up -d启动服务。
内容的提问来源于stack exchange,提问作者nCode
相关产品推荐
相关产品推荐

