Github Actions 中的 Docker 构建对于节点 arm64 映像失败

问题描述 投票:0回答:1

我正在尝试为我的个人 Nodejs 项目构建一个镜像,以便在我的树莓派上运行。

这是一个arm64节点js构建,但构建失败并出现以下错误:

#10 [5/5] RUN npm install
#10 0.154 exec /bin/sh: exec format error
#10 ERROR: process "/bin/sh -c npm install" did not complete successfully: exit code: 1
------
 > [5/5] RUN npm install:
0.154 exec /bin/sh: exec format error
------
Dockerfile:9
--------------------
   7 |     COPY . .
   8 |     
   9 | >>> RUN npm install
  10 |     
  11 |     EXPOSE 3000
--------------------
ERROR: failed to solve: process "/bin/sh -c npm install" did not complete successfully: exit code: 1
Error: Process completed with exit code 1.

我的 Dockerfile 如下所示:

FROM --platform=linux/arm64 arm64v8/node:20

WORKDIR /usr/src/app

COPY package*.json ./

COPY . .

RUN npm install

EXPOSE 3000

CMD ["node", "server.js"]

我尝试过多个版本的节点,但结果相同。我也尝试过使用非arm64版本的node(错误地)构建成功,所以它一定是arm64版本的。

我可能会错过什么?

node.js docker raspberry-pi github-actions
1个回答
0
投票

我成功了!

Github Action 脚本是为错误的架构构建的。改为buildx

- name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1

- name: Build the Docker image
      run: |
         docker buildx create --use
         docker buildx build --platform linux/amd64,linux/arm64 \
         -f backend/Dockerfile \
         -t ghcr.io/${{ github.repository_owner }}/budgetapp-backend:${{ env.NEW_VERSION }} \
         --push \
         ./backend
© www.soinside.com 2019 - 2024. All rights reserved.