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

构建Elixir伞形应用Docker镜像时esbuild执行报错求助

解决Elixir伞形应用Docker构建时esbuild语法错误问题

问题原因

这个错误本质是esbuild的二进制文件和Docker镜像的CPU架构不兼容。常见触发场景:

  • 本地(比如arm64架构的M系列Mac)提前安装了node_modules,直接复制到amd64架构的Docker镜像中
  • Docker基础镜像的架构与构建/运行环境不匹配,导致npm安装的esbuild二进制无法执行

解决方案

方案1:在Docker内部完整安装npm依赖

不要把本地的node_modules复制到镜像里,而是在Docker构建流程中重新安装,确保依赖适配镜像架构:
修改Dockerfile相关步骤:

# 复制伞形应用的gpanel app
COPY ./apps/gpanel ./apps/gpanel

# 进入assets目录安装npm依赖
RUN cd ./apps/gpanel/assets && npm install

# 编译资源
RUN mix assets.deploy

方案2:指定Docker镜像架构

如果需要跨架构构建(比如在arm64机器上构建amd64镜像),在基础镜像声明时指定平台:

FROM --platform=linux/amd64 elixir:1.15-alpine
# 后续构建步骤...

方案3:改用Elixir官方的esbuild Hex包

放弃npm安装的esbuild,使用Hex仓库的esbuild包,它会自动下载适配当前架构的二进制文件:

  1. 在mix.exs的deps中添加:
defp deps do
  [
    {:esbuild, "~> 0.8", runtime: Mix.env() == :dev}
  ]
end
  1. 修改Dockerfile步骤:
COPY ./apps/gpanel ./apps/gpanel

# 安装适配当前架构的esbuild二进制
RUN mix esbuild.install

# 编译资源
RUN mix assets.deploy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:09:25