Можно ли запустить целевой этап сборки в Docker, не выполняя все предыдущие этапы сборки - PullRequest
0 голосов
/ 02 октября 2018

Я новичок в докере и пытаюсь изучить многоступенчатую сборку.Я хочу запустить определенный этап в докере docker build -t build-stage-tag --target build

Я ожидаю, что он запустит следующие этапы dependencies --> compile --> build и пропустит test.Но бывает так, что он также запускает этап тестирования.

Дайте мне знать, если мое понимание многоступенчатой ​​сборки --target неверно или в моем файле докера есть какая-то ошибка.

Я хочу запустить этап 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"]
...