通过使用以前使用 Azure Registry 构建的 Docker 个图像层,减少 GitOps 中的构建时间

Reduce build time in GitOps by using Docker image layers from previous build with Azure Registry

我正在 Github 操作设置中的拉取请求上构建一个 Docker 图片。构建图像并将其推送到 Azure 容器注册表。通常,这只是代码中的一个小更新,如果我可以重用之前构建(推送到 ACR)中的层,我可以节省很多时间。

如 Docker 文件所示,可以跳过 yarn install,因为新的更改仅发生在它下面的 COPY 语句中:

FROM node:16

# create dirs and chown
RUN mkdir -p /usr/src/node-app && chown -R node:node /usr/src/node-app

WORKDIR /usr/src/node-app

COPY package.json yarn.lock tsconfig.json ./

USER node

# install node modules
RUN yarn install --pure-lockfile

# ensure ownership
COPY --chown=node:node . .

# set default env
RUN mv .env.example .env

EXPOSE 3001

# entrypoint is node
# see https://github.com/nodejs/docker-node/blob/main/docker-entrypoint.sh

# default command: prod start
CMD ["yarn", "start"]

如何从 ACR 下载以前的图像并使用那里的图层?简单地下载以前的图像(带有不同的标签)似乎不起作用。

如果要将下载的图像用作缓存源,则需要向 docker build 命令提供 --cache-from 标志。

https://docs.docker.com/engine/reference/commandline/build/#options