C:/docker/
не является допустимым путем в maven:3.6.0-jdk-8
изображении, вы должны использовать что-то вроде /docker/
.
Следующее Dockerfile
:
FROM maven:3.6.0-jdk-8
COPY pom.xml /docker/
COPY testng.xml /docker/
COPY src /docker/
RUN cd /docker/ && mvn clean verify
следуетработать и запускать mvn clean verify
в контейнере Docker.Вы также можете установить рабочий каталог, чтобы избежать повторения /docker/
везде:
FROM maven:3.6.0-jdk-8
RUN mkdir /docker
WORKDIR /docker
COPY pom.xml .
COPY testng.xml .
COPY src .
RUN mvn clean verify
Наконец, небольшая хитрость при сборке с Maven, как вы делаете (выходит за рамки вашего вопроса, но полезно знать): выможет значительно сократить время вашей сборки, загружая зависимости (используя mvn dependency:resolve
) сразу после директивы COPY pom.xml /docker/
, например:
FROM maven:3.6.0-jdk-8
RUN mkdir /docker
WORKDIR /docker
COPY pom.xml .
RUN mvn dependency:resolve
COPY testng.xml .
COPY src .
RUN mvn clean verify
Таким образом, если вы собираете свой образ дважды, но просто обновляетеВо второй раз файлы в папке src
Docker сможет использовать кэшированный слой и перезапустить со слоя COPY src .
(следовательно, не перезагружая все зависимости).Но, конечно, если вы обновите pom.xml
, Docker повторно загрузит все зависимости во время следующей сборки.