0

我有一个Dockerfile看起来像下面这样的:

# creating a node base
FROM node:16-slim as node-base
ENV CI=true

# builder-base is used to build dependencies
FROM node-base as builder-base
COPY ./package-lock.json ./package.json ./
RUN npm ci --production

# 'development' stage installs all dev deps and can be used to develop code.
FROM builder-base as development
WORKDIR /app
COPY . . 
RUN npm ci
EXPOSE 4001
CMD ["npm", "start"]

# 'unit-tests' stage 
FROM development AS unit-tests
RUN npm test -- --coverage --testNamePattern=UT: 

# 'integration-tests' stage 
FROM development AS integration-tests
RUN npm test -- --coverage --testNamePattern=IT:

在我的 Azure DevOps CI 管道中,我想development通过将阶段发送到我的 Azure 容器注册表 (ACR) 来“缓存”阶段。这样,当我跑步unit-testsintegration-tests上台时,我可以从 ACR 中拉出来,并希望通过不构建development两次来节省一些时间。

我可以修改我Dockerfile的从适用于 CI 的 ACR 中提取,但我很确定这会搞砸在本地运行这些阶段。在本地,我不想从 ACR 中提取,并且因为它具有开发人员正在处理的最新代码,所以要在本地构建它。

有没有办法做到这一点而devspace没有多个Dockerfile,修改它们等?


--cache-from编辑:实际上,我可能能够通过命令在Azure DevOps 方面完成我所追求的目标build,而不必在本地修改Dockerfileor 。DevSpace.yaml

想法来自这里: 如何在 Azure DevOps 中启用 Docker 层缓存

还得测试一下。

4

1 回答 1

0

您可以将该appendDockerfileInstructions选项与多阶段构建结合使用(即FROMDockerfile 中的多个语句通过 devspace 添加到内存中):https ://devspace.sh/cli/docs/configuration/images/append-dockerfile-instructions

于 2021-11-01T17:32:53.563 回答