可以用 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-tests
和 integration-tests
阶段时,我可以从 ACR 中提取并希望通过不构建 development
两次来节省一些时间。
我可以修改我的 Dockerfile
以从适用于 CI 的 ACR 中提取,但我很确定这会在本地搞砸 运行 那些阶段。在本地,我不想从 ACR 中提取内容,而是在本地构建它,因为它具有开发人员正在处理的最新代码。
有没有办法用 devspace
做到这一点,而无需多个 Dockerfile
、修改它们等?
编辑:
实际上,我可以在 build
命令中使用 --cache-from
在 Azure DevOps 端完成我所追求的,而不必修改 Dockerfile
或 DevSpace.yaml
本地。
想法来自这里:
还得测试一下。
您可以将 appendDockerfileInstructions
选项与多阶段构建结合使用(即通过开发空间在内存中添加的 Dockerfile 中的多个 FROM
语句):https://devspace.sh/cli/docs/configuration/images/append-dockerfile-instructions
我有一个 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
、修改它们等?
编辑:
实际上,我可以在 build
命令中使用 --cache-from
在 Azure DevOps 端完成我所追求的,而不必修改 Dockerfile
或 DevSpace.yaml
本地。
想法来自这里:
还得测试一下。
您可以将 appendDockerfileInstructions
选项与多阶段构建结合使用(即通过开发空间在内存中添加的 Dockerfile 中的多个 FROM
语句):https://devspace.sh/cli/docs/configuration/images/append-dockerfile-instructions