You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:无法通过CLI链接WordPress与MySQL Docker容器

我来帮你排查在AWS Amazon Linux AMI上WordPress与MySQL容器无法连接的问题,我之前也遇到过类似情况,咱们一步步来解决:

第一步:先定位WordPress容器的启动故障

你提到仅MySQL容器正常运行,那WordPress容器大概率是启动失败或异常退出了,先通过以下命令排查具体原因:

  • 查看所有容器状态,确认WordPress容器的状态:
docker ps -a
  • 查看WordPress容器的启动日志,里面会明确显示是MySQL连接失败、缺少环境变量还是其他错误:
docker logs wordpress
第二步:替换过时的--link,用用户定义网络实现容器互联

Docker的--link是较旧的容器连接方式,存在网络隔离局限性,官方现在更推荐使用用户定义网络,这种方式下容器可直接通过容器名互相访问,稳定性更高:

  1. 创建专属网络:
docker network create wp-network
  1. 启动MySQL容器时指定该网络,同时提前创建WordPress默认需要的wordpress数据库(避免因数据库不存在导致连接失败):
docker run --name db --network wp-network \
  -e MYSQL_ROOT_PASSWORD=abc123 \
  -e MYSQL_DATABASE=wordpress \
  -d mysql
  1. 启动WordPress容器,同样指定该网络,并明确配置MySQL连接的环境变量:
docker run --name wordpress --network wp-network \
  -e WORDPRESS_DB_HOST=db:3306 \
  -e WORDPRESS_DB_USER=root \
  -e WORDPRESS_DB_PASSWORD=abc123 \
  -e WORDPRESS_DB_NAME=wordpress \
  -p 80:80 \
  -d wordpress
第三步:修复docker-compose.yml配置问题

你说单个容器能运行但无法互联,大概率是配置里的环境变量或网络逻辑有问题,以下是可直接复用的正确配置模板:

version: '3.8'
services:
  db:
    image: mysql:latest
    volumes:
      - db_data:/var/lib/mysql  # 持久化MySQL数据,避免容器删除后数据丢失
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: abc123
      MYSQL_DATABASE: wordpress  # 提前创建WordPress所需数据库
      MYSQL_USER: wp_user        # 创建专属WordPress用户(比root更安全)
      MYSQL_PASSWORD: wp_pass

  wordpress:
    depends_on:
      - db  # 确保MySQL容器优先启动,但注意:这不代表MySQL服务已完全就绪
    image: wordpress:latest
    volumes:
      - wp_data:/var/www/html  # 持久化WordPress文件
    ports:
      - "80:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: wp_pass
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data:
  wp_data:

使用该配置时,直接运行docker-compose up -d即可启动两个容器,它们会自动加入默认网络实现互联。如果出现WordPress启动后暂时无法连接MySQL的情况,稍等30秒左右再刷新页面即可(MySQL启动需要一定时间)。

额外检查项
  1. Docker版本兼容性:Amazon Linux AMI默认的Docker版本可能偏旧,建议升级到最新稳定版避免兼容性问题:
sudo yum update -y
sudo yum install docker -y
sudo service docker start
sudo usermod -aG docker ec2-user  # 让ec2-user无需sudo即可运行Docker命令
  1. AWS安全组配置:确保EC2实例的安全组开放了80端口(供外部访问WordPress);3306端口若无需外部连接MySQL则无需开放,容器内部网络是互通的。

内容的提问来源于stack exchange,提问作者Rakesh Sivagouni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:07:50