Docker部署Laravel项目遇MySQL连接错误求助:php_network_getaddresses异常
问题分析与解决方案
核心问题拆解
- 容器网络访问错误:你用
localhost连接MySQL是错误的——在Docker Compose创建的内部网络中,Laravel容器和MySQL容器属于同一网络域,必须用服务名mysql作为数据库主机地址,而非localhost(容器内的localhost指向容器自身,而非宿主机或MySQL容器)。 - ARM64架构适配:你的配置已添加
platform: linux/arm64/v8,但需确认镜像拉取、容器启动过程中是否存在架构兼容异常。
具体修复步骤
1. 修改Laravel数据库配置
打开项目根目录下的.env文件,调整数据库连接参数:
DB_CONNECTION=mysql DB_HOST=mysql # 替换为compose配置里的mysql服务名 DB_PORT=3306 DB_DATABASE=laravel_db # 自定义数据库名,后续可自动创建 DB_USERNAME=root DB_PASSWORD=root
2. 优化Docker Compose配置(推荐)
添加数据持久化、自动建库等配置,提升稳定性:
version: "3.9" services: mysql: image: mariadb:10.8.3 platform: linux/arm64/v8 command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: laravel_db # 启动时自动创建指定数据库 ports: - 3306:3306 volumes: - mysql_data:/var/lib/mysql # 持久化数据库数据,避免容器重启丢失 adminer: image: adminer restart: always ports: - 8080:8080 depends_on: - mysql # 确保adminer在MySQL启动后再运行 volumes: mysql_data: # 声明数据卷
3. 重启服务并验证
- 停止现有容器:
docker compose down - 重新启动服务:
docker compose up -d - 进入Laravel运行容器(若有独立PHP容器),执行迁移验证连接:
php artisan migrate
4. ARM64架构额外排查
如果仍有架构相关错误:
- 手动拉取适配ARM64的镜像:
docker pull mariadb:10.8.3 --platform linux/arm64/v8 - 查看MySQL容器日志定位问题:
docker compose logs mysql
内容的提问来源于stack exchange,提问作者Michelle Tan
相关产品推荐
相关产品推荐

