【问题标题】:Is it possible to to run a target build stage in docker without running all the previous build stages是否可以在 docker 中运行目标构建阶段而不运行所有先前的构建阶段
【发布时间】:2018-10-02 19:38:11
【问题描述】:

我是 docker 新手,正在尝试探索多阶段构建。我想在 docker docker build -t build-stage-tag --target build 上运行特定阶段

我希望它运行以下阶段dependencies --> compile --> build 并跳过test。但碰巧它也运行测试阶段。

如果我对多阶段构建--target 的理解有误,或者我的 docker 文件中有错误,请告诉我。

我想做的是运行build 阶段而不运行test,反之亦然。

这就是我的 Dockerfile 的样子:

# Pull base image
FROM openjdk:8u171 as dependencies

# Install Scala
## Piping curl directly in tar
// do some stuff

# Copy source into container
COPY . /usr/src/app

FROM dependencies as compile
WORKDIR /usr/src/app
# Test and build the jar in the same step to save time
RUN sbt -Dsbt.log.noformat=true compile
RUN sbt -Dsbt.log.noformat=true assembly

FROM compile as test
WORKDIR /usr/src/app
RUN sbt -Dsbt.log.noformat=true -Dtest_db_user=root -Dtest_db_password=password -Dtest_db_host=localhost coverage test coverageReport

FROM compile as build

# Define working directory
WORKDIR /root

COPY --from=compile /usr/src/push/target/scala-2.12/app-assembly-?*.?*.?*.jar ./push.jar
COPY --from=compile /usr/src/push/config/jvm.config ./jvm.config
COPY --from=compile /usr/src/push/entrypoint.sh /bin/entrypoint.sh

RUN chmod +x /bin/entrypoint.sh
ENTRYPOINT ["/bin/entrypoint.sh"]
CMD ["docker", "blah"]

【问题讨论】:

    标签: docker dockerfile docker-multi-stage-build


    【解决方案1】:

    设置 DOCKER_BUILDKIT=1 环境变量以使用 buildkit,如下所示:

    DOCKER_BUILDKIT=1 docker build -t build-stage-tag --target build -<<EOF
    FROM alpine as base
    RUN echo "running BASE commands"
    
    FROM base AS test
    RUN echo "running TEST commands"
    
    FROM base AS build
    RUN echo "running BUILD commands"
    EOF
    

    输出:

    [+] Building 4.4s (7/7) FINISHED
     => [internal] load .dockerignore                                                                                                                               0.5s
     => => transferring context: 2B                                                                                                                                 0.0s
     => [internal] load build definition from Dockerfile                                                                                                            0.3s
     => => transferring dockerfile: 204B                                                                                                                            0.0s
     => [internal] load metadata for docker.io/library/alpine:latest                                                                                                0.0s
     => [base 1/2] FROM docker.io/library/alpine                                                                                                                    0.1s
     => => resolve docker.io/library/alpine:latest                                                                                                                  0.0s
     => [base 2/2] RUN echo "running BASE commands"                                                                                                                 1.4s
     => [build 1/1] RUN echo "running BUILD commands"                                                                                                               1.5s
     => exporting to image                                                                                                                                          0.7s
     => => exporting layers                                                                                                                                         0.6s
     => => writing image sha256:c6958c8bb64b1c6d5a975d8fa4b68c713ee5b374ba9a9fa00f8a0b9b5b314d5e                                                                    0.0s
     => => naming to docker.io/library/build-stage-tag                                                                                                              0.0s
    

    【讨论】:

      猜你喜欢
      • 2020-09-08
      • 2022-07-16
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      • 2021-05-15
      相关资源
      最近更新 更多