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

基于node:lts-alpine的Docker构建突然失效,如何恢复?

问题解决:Docker构建Angular项目时出现/bin/sh: Unknown: not found错误

问题背景

Dockerfile内容如下:

FROM node:lts-alpine as node
ARG STAGE='dev'
ARG STAGEPATH='/dev'
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN $(npm bin)/ng build --configuration $STAGE --base-href=${STAGEPATH}/konnektor/

执行构建命令:

docker build --progress=plain --no-cache -t konnektor .

出现错误:

#14 [node 6/6] RUN $(npm bin)/ng build --configuration dev --base-href=/dev/konnektor/
#14 sha256:0d47aa4d98557f141c02bf395f4e2f6dd49e9cebe6dddad4ea4e5126da5016e7           
#14 10.72 /bin/sh: Unknown: not found
#14 ERROR: executor failed running [/bin/sh -c $(npm bin)/ng build --configuration $STAGE --base-href=${STAGEPATH}/konnektor/]: exit code: 127
------> [node 6/6] RUN $(npm bin)/ng build --configuration dev --base-href=/dev/konnektor/:

此前构建正常,怀疑是node:lts-alpine镜像更新导致,无法获取旧版本镜像。

解决方案

方案1:替换$(npm bin)/ng为npx ng

修改Dockerfile中的RUN命令:

RUN npx ng build --configuration $STAGE --base-href=${STAGEPATH}/konnektor/

npx会自动寻找本地node_modules中的ng命令,避免npm bin输出路径在新镜像环境下的解析问题。

方案2:直接指定ng的绝对路径

直接使用node_modules下的ng可执行文件路径:

RUN ./node_modules/.bin/ng build --configuration $STAGE --base-href=${STAGEPATH}/konnektor/

方案3:锁定node镜像的具体版本

避免使用lts-alpine这种滚动标签,改用具体的LTS版本标签(比如当前Node.js 20为LTS版本):

FROM node:20-alpine as node

后续镜像更新不会自动切换版本,保持构建环境稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:35:22