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

M1芯片Mac中使用Quarkus配合Testcontainer拉取MySQL镜像报错如何解决

错误原因

你遇到的报错是因为使用的mysql:5.7.8官方镜像未提供linux/arm64/v8架构版本,M1芯片的Mac默认拉取适配arm架构的镜像,找不到对应镜像清单就会触发该错误。PostgreSQL运行正常是因为PostgreSQL官方镜像已完成多架构适配,包含arm64/v8版本支持。

解决方案

可根据实际业务场景选择以下任意一种方案解决:

  • 方案1:替换为arm64兼容的MySQL系镜像
    可选用MariaDB镜像作为替代,MariaDB完全兼容MySQL 5.7语法,且全版本支持arm64架构,仅需修改镜像声明即可,也可选择mysql/mysql-server:5.7系列镜像,该镜像官方提供arm64版本支持。
    修改后代码示例:
    open class MySqlResourceTest : QuarkusTestResourceLifecycleManager {
        // 替换为适配arm64的镜像即可,原有逻辑无需改动
        private val DATABASE: SpecifiedMySQLContainer = SpecifiedMySQLContainer("mysql/mysql-server:5.7.42").apply {
            withDatabaseName("test")
            withUsername("abc")
            withPassword("123456")
            withExposedPorts(3317)
        }
    
        override fun start(): MutableMap<String, String> {
            DATABASE.start()
            DATABASE.setCommand()
            return Collections.singletonMap("quarkus.datasource.url", DATABASE.jdbcUrl)
        }
    
        override fun stop() {
            DATABASE.stop()
        }
    }
    
  • 方案2:开启Docker Rosetta转译运行x86镜像
    如果必须使用mysql:5.7.8原版镜像,打开Docker Desktop设置,进入「Features in Development」页面,勾选「Use Rosetta for x86/64 emulation on Apple Silicon」,保存重启Docker后即可通过转译运行x86架构的镜像,无需修改代码。
  • 方案3:升级MySQL版本至8.0.23及以上
    官方MySQL镜像从8.0.23版本开始正式提供arm64架构支持,若业务允许升级MySQL版本,直接将镜像标签修改为8.0.23以上版本即可,比如mysql:8.0.39。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 08:15:03