
Automatize seu Workflow de Desenvolvimento com CI/CD e Docker
TL;DR
Um guia prático para implantar uma aplicação Java em Docker usando o pipeline CI/CD da AWS.
Introdução
O uso de ferramentas de implantação moderna revolucionou a forma como gerenciamos e entregamos software. O Docker, uma tecnologia essencial para containerização, permite empacotar aplicações e suas dependências em contêineres portáteis. Aliado ao pipeline CI/CD da AWS, o Docker oferece automação, escalabilidade e eficiência, adequando-se a projetos de diferentes tamanhos.
Neste artigo, apresentaremos um guia prático para implantar uma aplicação Java em um contêiner Docker usando o pipeline CI/CD da AWS. Além disso, discutiremos a importância do Docker e como o Docker Compose facilita o gerenciamento de aplicativos multi-contêiner.
Por Que Escolhemos o CI/CD da AWS
A AWS se destaca pela integração, escalabilidade e capacidades de automação, tornando a sua combinação com o Docker altamente eficaz. Os principais motivos incluem:
- Escalabilidade: Serviços como o EC2 se ajustam automaticamente à demanda, garantindo eficiência de custo e alta disponibilidade.
- Integração Fluida: Ferramentas como CodePipeline, CodeBuild e CodeDeploy se conectam naturalmente a serviços como ECR, RDS e ALB.
- Automação: A automação de builds, testes e implantações elimina erros manuais e economiza tempo.
Melhores Práticas a Seguir
- Funções IAM: Atribua apenas permissões necessárias para garantir robustez na segurança.
- Tagging de Recursos: Facilita o rastreamento de custos e identificação de recursos.
- Otimização de Custos: Avalie periodicamente o uso de recursos para melhorar a gestão de custos.
Pré-requisitos
1. Conta AWS
Uma conta AWS ativa com as permissões necessárias.
2. Instância EC2
Uma instância Amazon EC2 atuará como servidor de implantação, funcionando com um sistema operacional suportado.
3. Funções IAM
Crie funções IAM com permissões apropriadas:
- Função CodeDeploy: Permite que o CodeDeploy interaja com outros serviços AWS.
- Função da Instância EC2: Necessária para comunicação com o CodeDeploy e outros serviços AWS.
4. Repositório de Controle de Fonte
Configure um repositório de controle de código, como AWS CodeCommit, GitLab ou GitHub.
5. Amazon S3
Uma bucket S3 configurada para armazenar artefatos de implantação e logs.
Containerizando Aplicações
A containerização é fundamental para nossa estratégia de implantação. Veja como realizamos a containerização com o Docker:
- Definindo um Dockerfile: Especifique os passos necessários para criar a imagem da aplicação.
# Use a imagem oficial OpenJDK como imagem base
FROM public.ecr.aws/docker/library/openjdk:17
# Configure o diretório de trabalho
WORKDIR /app
# Copie o arquivo JAR da aplicação para o contêiner
COPY target/java-app.jar /root/ROOT.jar
# Exponha a porta da aplicação
EXPOSE 8080
# Defina o comando para executar a aplicação
ENTRYPOINT /sbin/entrypoint.sh
Gerenciando e Versionando Imagens Docker com Amazon ECR
O Amazon ECR é crucial para gerenciar e versionar nossa integração Docker com a AWS.
Crie um Repositório no AWS ECR: Usar ECR garante controle de versão e simplifica implantações.
Automatizando a Implantação com o AWS CodePipeline
O AWS CodePipeline gerencia o pipeline CI/CD de forma integrada:
- Fase de Fonte: Recupera o código mais recente do repositório.
- Fase de Build (CodeBuild): Gera a imagem Docker e a envia para o Amazon ECR.
Arquivo BuildSpec
version: 0.2
phases:
install:
runtime-versions:
java: corretto17
docker: 20
commands:
- mvn clean install -DskipTests
pre_build:
commands:
- aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
build:
commands:
- mvn package -DskipTests
- docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
post_build:
commands:
- docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
Configurando o Armazenamento de Artefatos
Use o Amazon S3 como repositório de artefatos para garantir um armazenamento eficaz e organizado.
1. Configurando o Bucket S3
- Acesse o serviço S3 no console da AWS.
- Selecione criar bucket e atribua um nome exclusivo.
- Ative a versionação para manter o histórico dos artefatos.
2. Configurando Permissões do Bucket
Conceda as permissões necessárias para permitir que CodePipeline e CodeBuild carreguem artefatos.
Integrando com CodePipeline
- Crie um novo pipeline no AWS CodePipeline.
- Selecione seu repositório Git na seção de fornecedor de origem.
- Defina a localização do artefato no bucket S3 criado anteriormente.
- Escolha o CodeDeploy como provedor de implantação.
Conclusão
A adoção do CI/CD na AWS transformou nosso processo de implantação. Utilizando a containerização do Docker com serviços como EC2, ECR e CodePipeline, criamos um sistema automatizado e escalável. Isso permite que as equipes se concentrem na inovação e entrega de valor, enquanto a AWS gerencia as complexidades.
O CI/CD com Docker e AWS é uma solução perfeita para modernizar fluxos de trabalho de implantação, promovendo automação e agilidade nas entregas.
Fonte: CI/CD com Docker e AWS: Automatizando seu Workflow de Desenvolvimento
Conteudo selecionado e editado com assistencia de IA. Fontes originais referenciadas acima.


