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

从M1 Pro升级到M3 Pro后docker-compose up导致Node构建失败

问题分析与解决方案

核心问题是M3 Pro的ARM64架构下,Docker容器默认以ARM64模式运行,而css-inline包在容器内尝试加载linux-arm64-gnu版本,但该版本可能未被包支持,或者本地挂载的node_modules是Mac ARM64(darwin-arm64)版本,与容器的Linux环境不兼容。

解决方案1:强制容器以x86_64架构运行

在docker-compose.yml的backend服务中添加platform配置,强制使用x86_64架构,与你之前M1 Pro上的兼容模式一致:

version: '3.9'
services:
    backend:
        build: .
        platform: linux/x86_64  # 新增该行
        ports:
            - 5650:3000
        volumes:
            - .:/app
        depends_on:
            - db
            - redis
    # 其他服务配置不变

这样容器会以x86_64兼容模式运行,css-inline会加载对应的linux-x64版本包,该版本通常是成熟支持的。

解决方案2:隔离本地与容器的node_modules

当前配置将本地目录挂载到容器的/app,导致容器直接使用本地Mac ARM64环境安装的node_modules,其中的css-inline是darwin-arm64版本,无法在Linux容器中运行。解决步骤:

  1. 在项目根目录创建.dockerignore文件,添加:
node_modules
  1. 修改Dockerfile,确保容器内独立安装依赖:
FROM node:16.17
WORKDIR /app
# 先拷贝依赖配置文件,利用Docker缓存
COPY package*.json ./
RUN npm install
# 再拷贝项目代码
COPY . .
CMD ["npm", "run", "start:dev"]

这样构建容器时,会在Linux环境下安装对应架构的css-inline包,避免本地依赖干扰。

解决方案3:升级css-inline并指定ARM64架构安装

如果需要原生ARM64容器支持:

  1. 升级css-inline到最新版本,检查是否已支持linux-arm64-gnu架构;
  2. 在Dockerfile中安装依赖时指定目标架构:
RUN npm install --target_arch=arm64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:32:05