M1 Pro上Docker MySQL实例无法运行,Ubuntu环境正常
M1 Pro设备上Docker Compose启动MySQL实例失败的排查与解决
问题根源
M1 Pro为ARM64架构,你当前使用的mysql/mysql-server:8.0镜像默认适配x86_64,结合本地残留的x86环境MySQL数据、环境变量冲突或端口占用,导致启动异常。
解决步骤
更换兼容ARM的MySQL镜像
官方mysql:8.0镜像支持多架构,会自动适配ARM64,替换原镜像配置:mysql: image: 'mysql:8.0' # 其余配置保持不变若仍需使用
mysql/mysql-server,可指定平台强制拉取兼容版本:mysql: image: 'mysql/mysql-server:8.0' platform: linux/arm64 # 其余配置保持不变清理残留的不兼容数据
Ubuntu上生成的x86架构MySQL数据无法在ARM环境中正常读取,会导致启动报错:- 停止并清理容器及关联卷:
docker compose down -v - 删除本地挂载的旧数据目录:
rm -rf ./docker/build/mysql8 - 重新启动服务:
docker compose up
- 停止并清理容器及关联卷:
修复环境变量冲突
配置中同时设置MYSQL_ROOT_PASSWORD与MYSQL_ALLOW_EMPTY_PASSWORD: 1,二者冲突会导致权限配置混乱,需二选一:- 若需密码登录:删除
MYSQL_ALLOW_EMPTY_PASSWORD: 1 - 若允许空密码:删除
MYSQL_ROOT_PASSWORD相关配置
- 若需密码登录:删除
检查端口占用
M1 Pro本地可能运行着MySQL服务占用3306端口,导致容器无法绑定:- 检查端口占用:
lsof -i :3306 - 停止本地MySQL服务(以brew安装为例):
brew services stop mysql - 或修改
.env中的FORWARD_DB_PORT为3307等未占用端口
- 检查端口占用:
内容的提问来源于stack exchange,提问作者Veshraj Joshi
相关产品推荐
相关产品推荐

