我有一个类似于以下内容的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阶段“缓存”到我的(ACR)。这样,当我运行unit-tests和integration-tests阶段时,我可以从ACR中提取,希望通过不构建两次development来节省一些时间。
我可以修改我的Dockerfile从ACR中提取,这将适用于CI,但我很肯定这会在本地运行这些阶段。在本地,我不想从ACR中提取,而且它是在本地构建的,因为这是开发人员正在开发的最新代码。
是否有一种不用多个devspace、修改它们等就可以使用Dockerfile来做到这一点的方法?
编辑:实际上,我可以在Azure DevOps端用--cache-from在build命令中完成我想要的东西,而不必在本地修改Dockerfile或DevSpace.yaml。
创意来自于这里:How to Enable Docker layer caching in Azure DevOps
还得试一试。
发布于 2021-11-01 17:32:53
您可以结合使用appendDockerfileInstructions选项和多阶段构建(即通过devspace添加到内存中的Dockerfile中的多个FROM语句):https://devspace.sh/cli/docs/configuration/images/append-dockerfile-instructions
https://stackoverflow.com/questions/69775503
复制相似问题