我有一个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-tests
和integration-tests
上台时,我可以从 ACR 中拉出来,并希望通过不构建development
两次来节省一些时间。
我可以修改我Dockerfile
的从适用于 CI 的 ACR 中提取,但我很确定这会搞砸在本地运行这些阶段。在本地,我不想从 ACR 中提取,并且因为它具有开发人员正在处理的最新代码,所以要在本地构建它。
有没有办法做到这一点而devspace
没有多个Dockerfile
,修改它们等?
--cache-from
编辑:实际上,我可能能够通过命令在Azure DevOps 方面完成我所追求的目标build
,而不必在本地修改Dockerfile
or 。DevSpace.yaml
想法来自这里: 如何在 Azure DevOps 中启用 Docker 层缓存
还得测试一下。