我正在尝试为我的个人 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版本的。
我可能会错过什么?
我成功了!
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