Docker 在节点上构建:alpine-lts 突然不再工作了

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

遵循我的 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”在几个小时前得到了更新。所以我强烈认为这就是问题所在。我现在的问题是,我怎样才能让我的构建再次运行?最后一个镜像已被此构建覆盖,并且 docker.io 不会提供较旧的摘要哈希来拉取较旧的镜像。

我尝试在 docker.io 上获取较旧的镜像版本,但没有成功。

我看到,其他高山容器也在同一时间更新。

node.js docker
2个回答
1
投票

对于其他人,可能面临同样的问题,这是我的解决方案:

我能够通过将 Dockerimage 的摘要硬连线到之前的版本来修复我的设置。

问题是找到图像的摘要哈希值。它们在 docker.io 中找不到(只有最新的哈希值)。

但幸运的是,有一个存储库可以跟踪版本: https://github.com/docker-library/repo-info/blob/master/repos/node/remote/lts-alpine.md

根据 lts-alpine.md 的 git 历史记录,我得到了较旧的图像哈希值。因此我改变了

FROM node:lts-alpine as node

FROM node@sha256:fda98168118e5a8f4269efca4101ee51dd5c75c0fe56d8eb6fad80455c2f5827 as node


0
投票

@kolja 答案是正确的。查找图像哈希的更简单方法是通过 docker hub 网站。可以直接从搜索组件过滤特定标签:

https://hub.docker.com/_/node/tags?page=&page_size=&ordering=&name=lts-alpine

© www.soinside.com 2019 - 2024. All rights reserved.