【发布时间】: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