Docker: ¿Instalar dependencies Maven solo durante la etapa de compilation?

Todavía nuevo para Docker e intentando que un service web Jetty se ejecute dentro de un contenedor. Este es mi file de docker en este momento

Receta

FROM maven:3.3-jdk-8-alpine # Install packages # To find packages to install see - https://pkgs.alpinelinux.org/packages RUN apk add --no-cache curl tar bash wget apache-ant RUN apk info # Do any Maven configuration ENV MAVEN_HOME /usr/share/maven VOLUME "$USER_HOME_DIR/.m2" ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2" # Copy over project source files to the /tmp folder COPY . /tmp/project WORKDIR /tmp/project # Preinstall any Maven depencencies RUN mvn install -pl '!deb' -DskipTests # Default command when running the docker image, can be overriden CMD cd webapp/ && mvn jetty:run 

Durante la compilation de Docker, especifico maven install para instalar todas las dependencies del proyecto y comstackr las jarras para cada module a partir de las fonts.

Sin embargo, cuando ejecuta el contenedor acoplable, todavía intenta reinstalar todas las dependencies y luego falla porque no puede encontrar mi file api.jar

Mi estructura de proyecto es así

Servicio de estructura de proyecto

  • api
  • lib
  • Aplicación Web
  • pom.xml

Error

Los siguientes artefactos no se pudieron resolver: com.foo.service: service-api: jar: 1.14-SNAPSHOT

Hacer los mismos pasos fuera de un contenedor funciona bien y el service de embarcadero comienza bien. ¿Alguna idea de cómo solucionarlo?

Las dependencies de SNAPSHOT son revisadas regularmente por Maven, por defecto diariamente. Pero puedes deshabilitar esto en tu settings.xml de Maven. Consulte https://stackoverflow.com/a/3942048/2235015 para get una respuesta en un caso similar (pero invertido) y consulte http://maven.apache.org/ref/3.2.2/maven-settings/settings. html (búsqueda de updatePolicy ).

Ejemplo de configuration del depósito en su settings.xml :

 <repository> <id>snapshots</id> <url>http://host/nexus/repos/snapshots</url> <snapshots> <updatePolicy>never</updatePolicy> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </repository>