Dockerizando sua aplicação Spring Boot
- #Spring
- #Docker
- #Java
Dockerizando a sua aplicação Spring Boot.
Neste artigo, vou mostrar de forma breve como colocar sua aplicação Spring Boot em Containers através do Docker. Passos semelhantes também se aplicam para o Podman.
1 - Instale o Docker e o Docker Compose no seu sistema operacional. Você pode encontrar as instruções de instalação em https://docs.docker.com/install/;
2 - Crie um arquivo Dockerfile na raiz do projeto, com o seguinte conteúdo:
FROM openjdk:17-jdk-alpine
ARG JAR_NAME=app.jar
COPY ${JAR_NAME} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
3 – Construa a imagem Docker usando o seguinte comando:
docker bulid -t nome-da-aplicacao .
4 – Caso sua aplicação não tenha Banco de Dados, é possível criar um arquivo chamado docker-compose.yml na raiz do projeto, com o seguinte conteúdo:
version: "3"
services:
app:
build: .
ports:
- "8080:8080"
exposure:
publish_all_ports: true
5 – Para iniciar o serviço Docker use o seguinte comando:
docker compose up
6 – Através do Web Browser, verifique o funcionamento do aplicativo em http://localhost:8080
7 – Caso sua aplicação precise de um Banco de Dados para garantir a persistência, será necessário modificar o docker-compose.yml para que isto ocorra de maneira mais automatizada. Abaixo segue os comandos no arquivo:
version: "3"
services:
app:
build: .
environment:
SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/nome_do_banco?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=UTC
SPRING_DATASOURCE_USERNAME=root
SPRING_DATASOURCE_PASSWORD=senha_de_acesso
ports:
- "8080:8080"
exposure:
publish_all_ports: true
mysql:
image: minha-aplicacao_mysql
environment:
MYSQL_ROOT_PASSWORD=senha_de_acesso
volumes:
- my-sql-data:/var/lib/mysql
ports:
- "3306:3306"
networks:
default:
external:
name: minha-redes-externas
8 – Com o arquivo refeito, use novamente o comando docker-compose up para o funcionamento das novas funcionalidades.
Recentemente, fiz uma aplicação Spring Boot REST API que funciona na nuvem através do Railway. Este tipo de aplicação, usa as vantagens dos Containers em cloud. Caso queira verificar o Dockerfile e o Docker compose, acesse o meu github para exemplificar este conteúdo.
Git Hub: https://github.com/claudio-es-andrade/gameShopDTO/Dockerfile
https://github.com/claudio-es-andrade/gameShopDTO/Docker-compose.yml
Bons Estudos, Boas Práticas,
Claudio