首页 > 解决方案 > 使用 docker 多阶段构建强制目标参数?

问题描述

我们在 CI 环境中使用 docker 容器化我们的构建管道。我们有一个多阶段构建的设置,包含(简化的)Dockerfile。这个想法是,根据触发器(分支类型),docker build使用相关--target参数运行。例如,部署阶段应该只在合并到主触发器发生时发生。

我们使用以下命令调用 docker 构建docker build --target build-phase:但是,为了避免后面的阶段被意外执行,如何更改 dockerfile 以使target参数强制?

FROM node:10.16 as build-phase
WORKDIR /app/
COPY . /app
RUN npm ci
RUN npm run build


### UNIT TEST PHASE ###
FROM build-phase as unit-test-phase

# Install java for firebase emulator
RUN apt-get update && apt-get install -y openjdk-8-jdk

# Run tests
RUN npm run ci-test

### INTEGRATION TEST PHASE ###
FROM unit-test-phase as int-test-phase
RUN npm run ci-int-test

### DEPLOY PHASE ###
FROM int-test-phase as deploy-phase
RUN ./deploy.sh

标签: dockercontinuous-integrationdockerfiledocker-multi-stage-build

解决方案


推荐阅读