Como empaquetar un microservicio hecho en spring con docker

Prerequisitos

  • Aplicación Spring
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.4</version>
  • Docker version 2.10.12, build e91ed57
  • Apache Maven 3.8.5

Pasos

  • Asegurate de que tu aplicacon de spring se ejecute con maven
./mvnw package && java -jar target/gs-spring-boot-docker-0.1.0.jar
  • Crea el Dockerfile en el proyecto de spring con las siguientes caracteristicas. No olvides renombrar al app.jar para que los guar
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
  • Compila con maven y que genera el componente jar.
mvn install
  • Construye la imagen con el comando de maven. No olvides sustituir myorg/myapp por un identificador para el hub de docker (compañia, y aplicacion)
docker build --build-arg JAR_FILE=target/*.jar -t myorg/myapp .
  • una vez que se haya creado por primera vez la imagen, puedes ahora reconstruirla solo utilizando la sentencia
docker build -t myorg/myapp .
  • Comprueba que se haya construido la imagen
docker image list --all
REPOSITORY                                         TAG             IMAGE ID       CREATED          SIZE
bcee/eureka                                        latest          2782caf7a46e   28 minutes ago   372MB
  • Crea un contenedor con la imagen creada.
docker run -p 8080:8080 myorg/myapp
  • Recuerda que los otros parametros de run (ver comandos de docker)