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

Apple M2芯片Ventura系统下如何修改docker-compose.yml获取MySQL 5.6

问题分析与解决方案

环境信息

  • 设备:搭载Apple Silicon M2芯片的Mac Pro
  • 系统:Ventura macOS 13
  • 使用的docker-compose.yml配置:
version: '3'
services:

  mysql:
    image: dtr.s-9.us/mysql:5.6
    restart: always
    environment:
      MYSQL_DATABASE: 'mydb'
      MYSQL_ROOT_PASSWORD: 'mypassword'
    ports:
      - '3306:3306'
    volumes:
      - ./mydb_dump:/docker-entrypoint-initdb.d

  adminer:
    image: adminer
    restart: always
    ports:
      - 7080:8080

错误现象

一个月前执行docker-compose up可正常拉取并运行镜像,现在执行出现以下错误:

docker-compose up
[+] Running 4/1
 ✔ Network mydb_default                                                                                                                              Created                                                                           0.1s 
 ✔ Container mydb-mysql-1                                                                                                                            Created                                                                           0.0s 
 ✔ Container mydb-adminer-1                                                                                                                          Created                                                                           0.0s 
 ! mysql The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested                                                                                   0.0s 
Attaching to mydb-adminer-1, mydb-mysql-1
mydb-mysql-1    | exec /usr/local/bin/docker-entrypoint.sh: exec format error
mydb-adminer-1  | [Thu Jun  8 23:38:55 2023] PHP 7.4.33 Development Server (http://[::]:8080) started
mydb-mysql-1 exited with code 0
mydb-mysql-1 exited with code 1
mydb-mysql-1 exited with code 1
mydb-mysql-1 exited with code 1

用户疑问

推测问题出在image: dtr.s-9.us/mysql:5.6,因为该私有仓库已无法访问,请问这是否是问题根源?如果是,有没有其他支持Apple M2芯片的MySQL 5.6镜像仓库?(注:改为image: mysql:8可正常拉取适配M2的镜像,但需要MySQL 5.6版本)


解答

问题根源确认

是的,这就是核心问题:

  1. 私有仓库dtr.s-9.us无法访问后,Docker无法拉取原本适配arm64架构的MySQL 5.6镜像;若本地有缓存镜像,大概率是amd64版本,直接运行就会出现平台不匹配的exec format error。
  2. 官方MySQL 5.6镜像并未提供arm64架构版本,直接使用mysql:5.6也会拉取amd64镜像,同样触发架构兼容问题。

可行解决方案

1. 使用第三方适配arm64的MySQL 5.6镜像

可以选用社区维护的适配arm架构的MySQL 5.6镜像,修改docker-compose.yml中MySQL服务的镜像字段:

mysql:
  image: biarms/mysql:5.6
  # 其余配置保持不变

2. 启用Docker的Rosetta模拟运行

在docker-compose.yml中为MySQL服务添加平台声明,强制使用amd64架构,依赖Mac的Rosetta 2模拟运行:

mysql:
  image: mysql:5.6
  platform: linux/amd64
  # 其余配置保持不变

这种方式无需寻找arm64镜像,但性能会有一定损耗,能满足MySQL 5.6的使用需求。

3. 自行构建arm64版MySQL 5.6镜像

如果对第三方镜像存疑,可以基于官方MySQL 5.6的Dockerfile调整构建逻辑,自行适配arm64架构:

  • 下载官方MySQL 5.6的Dockerfile
  • 修改基础镜像与构建步骤以适配arm架构
  • 执行docker build -t my-mysql:5.6 .构建本地镜像
  • 在docker-compose.yml中使用该本地镜像

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:25:30