Como criar uma imagem Docker para Spring Boot


FROM openjdk:25 AS builder


WORKDIR /app
COPY . /app
RUN microdnf install findutils
RUN ./gradlew build --no-daemon


FROM openjdk:25

WORKDIR /app
COPY --from=builder /app/build/libs/*.jar app.jar

EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "app.jar" ]


FROM: Estamos dizendo qual imagem será utilizada para gerar o build da nossa aplicação 
WORKDIR: Estamos criando uma pasta no container e usando ela como base (equivalente ao mkdir app e cd app)
RUN: A imagem que eu estou utilizando não aceita parâmetros e precisamos dele para o gradle, portanto instalei o findutils com o microdnf. 

Com as etapas acima temos o build da nossa aplicação (um .jar). Agora vamos copiar o build gerado para o container que vai executá-la. Aqui poderíamos usar o jre ao invés do jdk, porém não encontrei a versão 25 jre.

Basta criar outro diretório, copiar o arquivo jar gerado. O parâmetro --from=builder significa que estamos pegando o arquivo do estágio anterior e não do diretório da nossa máquina. O /app/build/libs/ é o caminho padrão que o build é salvo e estamos copiando ele para o /app com o nome app.jar. 

Depois expomos a porta 8080 e definimos o ENTRYPOINT que é o comando que será executado quando nosso container iniciar.  

Comentários

Postagens mais visitadas deste blog

Como desabilitar o login no Spring Security

Conectar no PostgreSQL com docker

Como conectar PostgreSQL com Docker + WSL2 no Spring Boot