树莓派构建Remix.run项目Docker镜像时出现错误码133
树莓派Docker构建Remix项目时npm install报"unreachable code"错误(返回码133)
问题描述
我在树莓派上用Docker构建Remix.run项目,Dockerfile内容如下:
FROM node:alpine WORKDIR /app COPY ./package*.json /app/ RUN npm install COPY . /app RUN npm run build CMD ["npm", "run", "start"]
构建时执行到RUN npm install步骤报错,错误日志:
$ docker image build -t website . Sending build context to Docker daemon 3.398MB Step 1/7 : FROM node:alpine ---> de31857d30b5 Step 2/7 : WORKDIR /app ---> Using cache ---> 8b3558d128e4 Step 3/7 : COPY ./package*.json /app/ ---> Using cache ---> d1d5f47f3a87 Step 4/7 : RUN npm install ---> Running in 279c78d7a2b3 # # Fatal error in , line 0 # unreachable code # # # #FailureMessage Object: 0x7eb164ec The command '/bin/sh -c npm install' returned a non-zero code: 133
已排除内存不足的可能,当前系统内存情况:
$ free -h total used free shared buff/cache available Mem: 923Mi 149Mi 282Mi 7.0Mi 491Mi 712Mi Swap: 99Mi 0B 99Mi
尝试添加--verbose参数执行npm install,输出无变化。
解决方案
1. 更换Node镜像为兼容ARM架构的版本
树莓派是ARM架构,node:alpine使用musl libc,部分场景下可能存在兼容性问题。建议改用基于glibc的Debian镜像,或者指定更稳定的ARM兼容Node版本:
# 改用LTS版本的Debian slim镜像 FROM node:lts-bookworm-slim WORKDIR /app COPY ./package*.json /app/ RUN npm install COPY . /app RUN npm run build CMD ["npm", "run", "start"]
也可以尝试指定适配ARM的Alpine版本,比如node:20-alpine(确保镜像支持armhf/arm64架构)。
2. 调整Docker构建时的资源限制
虽然系统剩余内存充足,但Docker默认可能给构建容器分配的内存不足,尝试在构建时指定更大内存:
docker build --memory 1g -t website .
3. 清理Docker构建缓存后重新构建
缓存的镜像层可能存在损坏,清理后重新构建:
docker builder prune -f docker build -t website .
4. 检查依赖兼容性
排查package.json中是否包含不兼容ARM架构的原生依赖,比如某些需要编译的C/C++模块。可以尝试删除package-lock.json后重新安装,或者替换为兼容ARM的替代依赖。
内容的提问来源于stack exchange,提问作者Nullndr
相关产品推荐
相关产品推荐

