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

M1芯片Mac中docker-compose.yml已配置MySQL但镜像未生成如何解决?

问题根因
  • M1系列芯片为arm64架构,MySQL 5.7官方并未提供对应架构的镜像,你配置的platform: linux/x86_64参数是通过Rosetta 2转译运行x86架构镜像,转译过程兼容性较差,极易出现镜像拉取失败、进程启动后立刻崩溃的问题,这是最核心的原因
  • 次要原因可能是本地残留的dbdata存储卷有损坏数据,导致MySQL初始化时读取异常直接退出
修复方案

优先推荐更换兼容arm64架构的MySQL兼容镜像,无需转译稳定性更高:

  1. 修改docker-compose.yml中db服务的配置,将镜像替换为和MySQL 5.7兼容性最高的mariadb 10.5版本,删除原有的platform配置行,其余配置保持不变:
db:
  image: mariadb:10.5
  # 已删除platform: linux/x86_64行
  environment:
    MYSQL_DATABASE: ${DB_DATABASE}
    MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
    MYSQL_PASSWORD: ${DB_PASSWORD}
    MYSQL_USER: ${DB_USERNAME}
    SERVICE_TAGS: dev
    SERVICE_NAME: mysql
  volumes:
    - dbdata:/var/lib/mysql
    - ./docker-compose/mysql/my.cnf:/etc/mysql/my.cnf
    - ./docker-compose/mysql/init:/docker-entrypoint-initdb.d
  ports:
    - 3307:3306
  networks:
    - lahmi
  1. 清理旧的残留容器、镜像和损坏存储卷:
# 注意-v参数会删除本地dbdata卷,旧数据库数据会清空,如有需要请先备份数据
docker-compose down -v
docker rmi -f mysql:5.7
  1. 重新构建启动服务:
docker-compose up -d --build
  1. 执行docker ps确认db服务正常运行后,再执行迁移命令:
  • 如果是在本地主机直接执行迁移:确认.env中DB_HOST=127.0.0.1、DB_PORT=3307
  • 如果是进入app容器内执行迁移:确认.env中DB_HOST=db、DB_PORT=3306

如果必须使用原生MySQL 5.7,可开启Docker的Rosetta转译增强:

  • 打开Docker Desktop设置,进入「Features in Development」页面,勾选「Use Rosetta for x86/64 emulation on Apple Silicon」,保存后重启Docker,再重新拉取镜像启动服务即可,该方案稳定性低于更换mariadb镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:54:04