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

M2 Mac部署Grid DB时Docker Compose架构不匹配错误求助

问题描述

我使用M2 Mac OS,运行docker compose up -d时遇到架构不匹配错误。我的docker-compose.yml包含GridDB、Kafka、Zookeeper和Jupyter服务,其中Griddb-server的配置片段如下:

version: '3'
volumes:
  griddb:
services:
  griddb-server:
    build:
      context: griddb-server
      dockerfile: Dockerfile
    container_name: griddb-server
    user: root
    expose:
      - '10001'
      - '10010'
      - '10020'
      - '10040'
      - '20001'
      - '41999'
    environment:
      NOTIFICATION_MEMBER: 1
      GRIDDB_CLUSTER_NAME: myCluster

构建griddb-server镜像的Dockerfile内容如下:

FROM griddb/griddb

USER root

RUN set -eux \
    && apt-get update \
    && apt-get install -y default-jre --no-install-recommends \
    && apt-get clean all \
    && rm -rf /var/lib/apt/lists/*

# Install GridDB c_client
WORKDIR /
RUN wget --no-check-certificate https://github.com/griddb/c_client/releases/download/v5.0.0/griddb-c-client_5.0.0_amd64.deb
RUN dpkg -i griddb-c-client_5.0.0_amd64.deb

RUN wget --no-check-certificate https://github.com/griddb/cli/releases/download/v5.0.0/griddb-ce-cli_5.0.0_amd64.deb
RUN dpkg -i griddb-ce-cli_5.0.0_amd64.deb

ADD start-griddb2.sh /
USER gsadm

ENTRYPOINT ["/bin/bash", "/start-griddb2.sh"]
CMD ["griddb"]

运行命令时触发的错误:

ERROR [iot_project-main-data-viz 3/12] RUN dpkg -i griddb-c-client_5.0.0_amd64.deb 0.2s
CANCELED [iot_project-main-jupyter 2/6] RUN wget --no-check-certificate https://github.com/griddb/c_client/releases/download/v5.0.0/griddb-c-client_5 0.0s

[iot_project-main-data-viz 3/12] RUN dpkg -i griddb-c-client_5.0.0_amd64.deb:

#0 0.133 dpkg: error processing archive griddb-c-client_5.0.0_amd64.deb (--install):

#0 0.133 package architecture (amd64) does not match system (arm64)
#0 0.146 Errors were encountered while processing:
#0 0.146 griddb-c-client_5.0.0_amd64.deb

我原本期望docker compose up能成功构建镜像,但实际因软件包架构(amd64)与系统(arm64)不匹配导致dpkg报错,进程终止。请问是否有办法修改docker-compose.yml解决该问题,或者是否有ARM64架构的GridDB C Client下载地址?


解决方案

方案1:强制以amd64架构构建运行镜像

在M系列Mac上,Docker支持通过指定平台参数,用QEMU模拟amd64环境来构建和运行镜像。修改docker-compose.yml中的griddb-server配置,添加platform参数:

services:
  griddb-server:
    build:
      context: griddb-server
      dockerfile: Dockerfile
      platform: linux/amd64  # 构建时指定amd64架构
    container_name: griddb-server
    platform: linux/amd64  # 运行容器时指定amd64架构
    user: root
    expose:
      - '10001'
      - '10010'
      - '10020'
      - '10040'
      - '20001'
      - '41999'
    environment:
      NOTIFICATION_MEMBER: 1
      GRIDDB_CLUSTER_NAME: myCluster

此方法无需修改Dockerfile,直接通过docker-compose配置即可兼容,但镜像运行时会有轻微性能损耗。

方案2:使用ARM64原生版本的GridDB包

GridDB从v5.3.0及以上版本开始提供ARM64架构的预编译deb包。你可以修改Dockerfile中的下载链接,替换为对应ARM64版本的包:

# 替换为ARM64版本的C Client
RUN wget --no-check-certificate [ARM64版本griddb-c-client的下载地址]
RUN dpkg -i griddb-c-client_<版本号>_arm64.deb

# 替换为ARM64版本的CLI
RUN wget --no-check-certificate [ARM64版本griddb-ce-cli的下载地址]
RUN dpkg -i griddb-ce-cli_<版本号>_arm64.deb

如果必须使用v5.0.0版本,该版本未提供官方ARM64预编译包,需要自行从源码编译C Client和CLI。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:54:54