Pular para o conteúdo principal

Automatizando Deploys com Docker e GitHub Actions

 Introdução

O processo de docker deploy pode ser complexo e demorado se não for bem automatizado. Felizmente, com ferramentas como GitHub Actions, é possível otimizar e automatizar o fluxo de deploy de aplicações, tornando-o mais rápido, eficiente e menos suscetível a erros. Neste artigo, vamos explorar como você pode automatizar o processo de deploy utilizando Docker e GitHub Actions, aproveitando os benefícios de pipelines bem configurados para realizar deploys consistentes e sem complicação.


 

O que é Docker e como ele facilita o deploy

O Docker é uma plataforma que permite criar, testar e executar aplicações de forma isolada e eficiente, utilizando containers. O container Docker encapsula a aplicação e suas dependências, garantindo que ela seja executada da mesma maneira em qualquer ambiente, seja local, de desenvolvimento ou produção.

Utilizar Docker deploy em seu fluxo de trabalho oferece inúmeras vantagens:

  • Portabilidade: A aplicação pode ser executada em qualquer ambiente compatível com Docker.
  • Escalabilidade: A facilidade de replicar containers facilita o dimensionamento da aplicação.
  • Consistência: A aplicação e todas as suas dependências são empacotadas, eliminando o famoso problema "na minha máquina funciona".

Agora, vamos ver como automatizar esse processo utilizando GitHub Actions.

Como GitHub Actions pode ajudar a automatizar o Docker Deploy

O GitHub Actions é uma plataforma poderosa para automação de fluxos de trabalho diretamente no GitHub. Ele permite criar pipelines para automatizar tarefas como testes, builds e, claro, deploys de aplicações. Quando combinado com o Docker, o GitHub Actions facilita a criação de workflows que realizam o deploy automaticamente sempre que há uma alteração no código.

Passo 1: Criando um arquivo de workflow no GitHub

O primeiro passo para automatizar o docker deploy com GitHub Actions é criar um arquivo de workflow na pasta .github/workflows do seu repositório. O GitHub Actions usa arquivos YAML para definir as etapas do workflow.

Aqui está um exemplo de arquivo deploy.yml para automatizar o deploy de uma aplicação Docker:

name: Docker Deploy Workflow

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out the code
      uses: actions/checkout@v2

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v2

    - name: Login to Docker Hub
      uses: docker/login-action@v2
      with:
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASSWORD }}

    - name: Build and Push Docker Image
      run: |
        docker build -t myapp:${{ github.sha }} .
        docker push myapp:${{ github.sha }}

    - name: Deploy to Production
      run: |
        ssh user@myserver "docker pull myapp:${{ github.sha }} && docker run -d myapp:${{ github.sha }}"

Explicação do workflow:

  • on.push: O workflow é acionado sempre que há um push para a branch main.
  • docker/setup-buildx-action: Configura o Docker Buildx, que permite a construção de imagens Docker de forma mais eficiente.
  • docker/login-action: Faz o login no Docker Hub utilizando as credenciais armazenadas como segredos no GitHub.
  • docker build e docker push: Constrói a imagem Docker e a envia para o Docker Hub.
  • Deploy to Production: Conecta-se ao servidor remoto via SSH, puxa a nova imagem Docker e a executa.

Esse arquivo automatiza completamente o processo de deploy, desde o build da imagem até a execução no servidor de produção.

Passo 2: Integrando com seu servidor de produção

Para que o workflow de deploy funcione corretamente, você precisará de um servidor de produção onde a aplicação será hospedada. No exemplo acima, usamos SSH para acessar o servidor e realizar o deploy. Para que isso funcione, você deve:

  1. Ter o Docker instalado no servidor de produção.
  2. Adicionar a chave SSH do servidor como um segredo no GitHub para garantir uma conexão segura durante o deploy.
  3. Configurar o servidor para puxar e executar as novas versões da imagem Docker.

Essa integração facilita a atualização do seu ambiente de produção de forma simples e rápida sempre que houver uma nova versão do código.

 

Melhore suas práticas de Docker com nosso artigo sobre Docker Multistage Build! Aprenda a criar imagens Docker seguras e leves para o seu ambiente."
Saiba como criar imagem Docker de forma otimizada.

Benefícios de automatizar o deploy com Docker e GitHub Actions

1. Redução de erros humanos

Automatizar o processo de deploy reduz consideravelmente a chance de erros humanos, como falhas no comando de deploy ou na configuração do ambiente de produção.

2. Desempenho e escalabilidade

A automação torna o deploy mais rápido e consistente, o que facilita escalar a aplicação em múltiplos ambientes e servidores.

3. Melhoria no controle de versão

Com o uso de tags no Docker, cada versão da aplicação é identificada de forma única, garantindo que você possa facilmente reverter para versões anteriores caso algo dê errado.

4. Integração contínua (CI) e entrega contínua (CD)

Com o GitHub Actions, você pode integrar o docker deploy em uma pipeline CI/CD completa, garantindo que seu código seja sempre testado e implantado de forma contínua.

Conclusão

Automatizar o docker deploy com GitHub Actions traz inúmeros benefícios para o ciclo de vida de desenvolvimento de software, como maior eficiência, consistência e segurança no processo de entrega. Ao integrar essas duas ferramentas poderosas, você consegue um fluxo de trabalho totalmente automatizado, garantindo deploys rápidos e sem falhas.

Dica: Se você ainda não utiliza GitHub Actions em seus projetos, comece agora a configurar pipelines para automatizar seus deploys! Não perca tempo com processos manuais e aproveite as vantagens dessa poderosa ferramenta.


Comentários

Postagens mais visitadas deste blog

O que são os poller no Zabbix e como configurar

  Os pollers no Zabbix são processos responsáveis pela coleta de dados de monitoramento dos hosts configurados no sistema. Eles desempenham um papel crucial na arquitetura do Zabbix, garantindo que as métricas dos diversos dispositivos e serviços sejam coletadas de forma eficiente e dentro dos intervalos de tempo definidos. O que são Pollers no Zabbix? Função : Os pollers executam verificações ativas nos hosts, coletando dados a partir de agentes Zabbix, SNMP, scripts personalizados, entre outros. Tipos de Pollers : Existem diferentes tipos de pollers no Zabbix, incluindo: Zabbix Poller : Realiza verificações ativas nos hosts. IPMI Poller : Coleta dados utilizando o protocolo IPMI. Java Poller : Utilizado para monitoramento de aplicações Java. Trapper : Recebe dados enviados passivamente pelos agentes Zabbix. HTTP Poller : Realiza verificações em serviços web. ICMP Poller : Realiza verificações utilizando ICMP (ping). Assuntos Relacionados aos Pollers Desempenho do Servidor Zabbix ...

AWS SQS com Terraform: Criando filas de mensagens na AWS

  AWS Simple Queue Service (SQS) é um serviço de fila de mensagens totalmente gerenciado que permite que você envie, armazene e receba mensagens entre diferentes componentes de um aplicativo distribuído ou microserviços. Com o Terraform, é possível automatizar a criação e gerenciamento de filas SQS na AWS. Neste artigo, vamos mostrar como criar uma fila SQS usando o Terraform e como configurar as permissões de acesso usando AWS Identity and Access Management (IAM).   Pré-requisitos Antes de começarmos, é importante ter certeza de que você tem os seguintes pré-requisitos: Uma conta ativa na AWS O AWS CLI configurado com suas credenciais de acesso O Terraform instalado em sua máquina local "Saiba como efetuar autenticação via SSO na AWS com Terraform ." Criando uma fila SQS com Terraform Para criar uma fila SQS usando o Terraform, é necessário definir um arquivo de configuração chamado   main.tf   com o seguinte conteúdo: copy provider "aws" { region = "us-eas...