可以用 DevSpace 替换 FROM,以便开发人员在不修改 Dockerfile 的情况下使用不同的引用吗?

Possible to replace a FROM with DevSpace so dev uses a different reference without modifying the Dockerfile?

我有一个 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、修改它们等?


编辑: 实际上,我可以在 build 命令中使用 --cache-from 在 Azure DevOps 端完成我所追求的,而不必修改 DockerfileDevSpace.yaml本地。

想法来自这里:

还得测试一下。

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