В первом случае вы запускаете build
из каталога builders
, но контекст , переданный в Docker, не содержит pom.xml
(он содержит то, что находится в вашем текущем каталоге как на docker-compose
инструкцию context: .
)
Во втором случае up
смонтирует каталог вашего проекта в app
с:
volumes:
- ~/dockerbuildtest/:/app/
Это означает, что появится ~/dockerbuildtest/pom.xml
в контейнере как /app/pom.xml
. Запуск mvn
из app
теперь работает.
почему первая сборка завершилась неудачно без пометки. xml ошибка, хотя она уже была
Это было не присутствует: в первой сборке pom.xml
не скопировано в ваш образ (см. Инструкцию COPY
).
Вы можете убедиться, что ваш контекст содержит pom.xml
, выполнив команду сборки из каталога root вашего проекта и указав Dockerfile, например:
build:
# will use current directory as build context
# by running from your project's root dir, context will contain pom.xml
context: .
# path to Dockerfile is relative to where build command is run
dockerfile: builders/Dockerfile
И скопируйте pom.xml
в свой Dockerfile, например:
# [...]
WORKDIR /app
# copy pom.xml from context into image
COPY pom.xml /app/pom.xml
# run from /app directory which now contains a pom.xml, should work
RUN mvn clean package