Como Containerizar um Serviço Spring Boot com Docker

Como Containerizar um Serviço Spring Boot com Docker

Como Containerizar um Serviço Spring Boot Integrado ao Qwen com Docker

Se você já integrou o modelo Qwen ao seu sistema Spring Boot e agora deseja colocar essa aplicação em produção de forma eficiente, então Docker é a ferramenta certa para isso.

Neste artigo, vamos mostrar como transformar sua aplicação Spring Boot que usa a API do Qwen em um container Docker, permitindo que ela seja executada de maneira consistente em qualquer ambiente: local, servidor ou nuvem.


O Que É Docker?

Docker é uma plataforma que permite empacotar aplicações junto com suas dependências em containers isolados. Isso facilita o deploy, pois elimina problemas do tipo:

"Funciona na minha máquina, mas não no servidor."

Com Docker, você define como sua aplicação deve rodar através de um Dockerfile, e depois pode gerar uma imagem reutilizável que contém tudo necessário para executar seu software.


Pré-Requisitos

Antes de começar, certifique-se de ter:

  • ✅ JDK 17+
  • ✅ Maven instalado
  • ✅ Docker instalado (docker --version)
  • ✅ Um projeto Spring Boot integrado à API do Qwen
  • ✅ Sua API Key do DashScope

Passo a Passo: Dockerizando o Projeto Spring Boot

1. Gere o JAR da Aplicação

No diretório raiz do projeto Spring Boot, execute:

mvn clean package

Isso gera um arquivo .jar dentro da pasta target/, por exemplo: qwen-springboot-api.jar.

Dica: Certifique-se de que o nome do JAR esteja correto no pom.xml ( ou ).


2. Crie o Arquivo Dockerfile

Na raiz do projeto, crie um arquivo chamado Dockerfile (sem extensão) com o seguinte conteúdo:

# Usa uma imagem oficial do OpenJDK como base
FROM openjdk:17-jdk-slim

# Define o autor/mantenedor da imagem
LABEL maintainer="seu-email@example.com"

# Define o diretório de trabalho dentro do container
WORKDIR /app

# Copia o JAR compilado para dentro do container
COPY target/qwen-springboot-api.jar app.jar

# Define variáveis de ambiente (ex: API Key do DashScope)
ENV DASHSCOPE_API_KEY=SUA_API_KEY_AQUI

# Executa a aplicação Java
ENTRYPOINT ["java", "-jar", "app.jar"]

⚠️ Substitua SUA_API_KEY_AQUI pela sua chave real do DashScope (ou use secrets no deployment final).


3. Construa a Imagem Docker

No terminal, na pasta raiz do projeto, execute:

docker build -t qwen-springboot .

Isso cria uma imagem chamada qwen-springboot.


4. Execute o Container

Agora, rode a aplicação em um container Docker:

docker run -d -p 8080:8080 --name qwen-app qwen-springboot

Onde:

  • -d: Roda em background (detached mode)
  • -p 8080:8080: Mapeia a porta 8080 do container para a máquina host
  • --name qwen-app: Nome do container

Pronto! Sua aplicação Spring Boot está rodando em um container Docker e pronta para escalar!


Teste a API

Abra seu navegador ou use o Postman/curl:

http://localhost:8080/api/ask?question=Qual+a+diferença+entre+Java+e+JavaScript?

Você deverá receber uma resposta do Qwen, indicando que a integração está funcionando perfeitamente dentro do container.


Estrutura Recomendada do Projeto

Para facilitar a compreensão, aqui está como deve estar a estrutura do seu projeto após os passos acima:

meu-projeto/
│
├── src/
│   └── main/
│       ├── java/           # Código fonte Spring Boot
│       └── resources/      # application.properties, etc.
│
├── target/
│   └── qwen-springboot-api.jar  # Gerado pelo mvn package
│
├── Dockerfile              # Definição do container
├── pom.xml                 # Configuração do Maven
└── README.md               # Opcional

Publicando a Imagem (Opcional)

Se quiser compartilhar sua imagem ou usá-la em outro servidor, você pode enviar para o Docker Hub:

  1. Faça login:
  2. docker login
  3. Marque a imagem com seu nome de usuário:
  4. docker tag qwen-springboot seu-usuario-docker/qwen-springboot
  5. Envie a imagem:
  6. docker push seu-usuario-docker/qwen-springboot

Agora, qualquer pessoa pode usar sua imagem com:

docker pull seu-usuario-docker/qwen-springboot

Dicas Adicionais

  • Use variáveis de ambiente para armazenar chaves sensíveis (como a do DashScope).
  • Utilize .env + --env-file no docker run para manter as credenciais fora do código.
  • Para ambientes de produção, considere usar docker-compose.yml ou orquestradores como Kubernetes.

Exemplo de docker-compose.yml:

version: '3.8'

services:
  qwen-app:
    image: qwen-springboot
    build: .
    ports:
      - "8080:8080"
    environment:
      - DASHSCOPE_API_KEY=SUA_API_KEY
    restart: always

Benefícios de Usar Docker Nesse Caso

Vantagem Descrição
🔄 Reprodutibilidade Garante que a aplicação funcione igual em qualquer lugar
🧼 Limpeza do Ambiente Não polui o sistema com dependências locais
🚀 Facilidade de Deploy Basta rodar o container
💡 Escalabilidade Pode ser replicado facilmente em clusters
🔐 Segurança Containers são isolados

Conclusão

Ao integrar o Qwen com Docker, você garante que sua aplicação Spring Boot possa ser implantada rapidamente em qualquer infraestrutura, sem preocupações com versões de bibliotecas ou sistemas operacionais diferentes.

Esse é um passo importante tanto para desenvolvedores individuais quanto para equipes de DevOps, especialmente se o objetivo for colocar modelos LLMs em produção de forma segura e controlada.


Quer Saber Mais?

Se precisar de ajuda para configurar um pipeline CI/CD com GitHub Actions ou automatizar builds no Docker Hub, é só me pedir!


📢 Gostou do conteúdo? Compartilhe com outros devs!

Tem dúvidas ou quer adaptar esse artigo para seu caso específico? Deixe nos comentários ou entre em contato!

Comentários

Postagens mais visitadas deste blog

Democracia: A Gente Ainda Vai Ter Que Lutar Muito

Depoimentos de fim de ano 2006

A Marcha da Insensatez: Como a Elite Está Jogando o Brasil no Abismo Democrático