Introdução
Docker Compose é uma ferramenta essencial para desenvolvedores e profissionais de DevOps que buscam otimizar a implantação e gerenciamento de aplicações multi-container. Este tutorial abrangente explora os conceitos fundamentais, estratégias de configuração e técnicas de implementação práticas para o uso eficaz do Docker Compose em diferentes ambientes.
Introdução ao Docker Compose
O que é o Docker Compose?
Docker Compose é uma ferramenta poderosa para definir e executar aplicações Docker multi-container. Permite que os desenvolvedores utilizem um ficheiro YAML para configurar serviços de aplicação, redes e volumes, simplificando a orquestração e gestão de contentores.
Conceitos Principais do Docker Compose
graph TD
A[Docker Compose] --> B[Configuração de Serviços]
A --> C[Gerenciamento Multi-Contêiner]
A --> D[Configuração Declarativa da Aplicação]
| Característica | Descrição |
|---|---|
| Definição de Serviço | Definir componentes da aplicação em docker-compose.yml |
| Configuração de Ambiente | Gerenciar facilmente diferentes ambientes |
| Escalabilidade | Escalabilidade horizontal simples dos serviços |
Instalação Básica no Ubuntu 22.04
## Atualizar o índice de pacotes
sudo apt update
## Instalar dependências
sudo apt install curl docker-compose -y
## Verificar a instalação
docker-compose --version
Exemplo de Configuração Docker Compose
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "8080:80"
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: mysecretpassword
Este exemplo demonstra uma configuração básica do Docker Compose com dois serviços interligados: um servidor web e um banco de dados PostgreSQL, mostrando os princípios de orquestração de contentores para aplicações multi-container.
Configuração do Docker Compose
Estrutura do Ficheiro Docker Compose
A configuração do Docker Compose é definida num ficheiro YAML, normalmente denominado docker-compose.yml. O ficheiro segue uma sintaxe estruturada que descreve serviços, redes e volumes para aplicações multi-container.
graph TD
A[docker-compose.yml] --> B[Versão]
A --> C[Serviços]
A --> D[Redes]
A --> E[Volumes]
Sintaxe de Configuração e Versão
| Componente-chave | Descrição |
|---|---|
| Versão | Especifica o formato do ficheiro Docker Compose |
| Serviços | Define contentores e suas configurações |
| Redes | Configura a rede dos contentores |
| Volumes | Gerencia a persistência de dados |
Exemplo Completo de Configuração Docker Compose
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./website:/usr/share/nginx/html
networks:
- web_network
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: secretpassword
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- web_network
networks:
web_network:
driver: bridge
volumes:
postgres_data:
Validação da Configuração
## Validar a sintaxe do ficheiro Docker Compose
docker-compose config
## Verificar a configuração sem iniciar contentores
docker-compose config --quiet
Implantação de Aplicações Docker Compose
Fluxo de Implantação
O Docker Compose proporciona uma abordagem simplificada para implantar aplicações multi-container com operações simples na linha de comandos.
graph TD
A[Preparar docker-compose.yml] --> B[Construir Serviços]
B --> C[Iniciar Contentores]
C --> D[Gerir Aplicação]
Comandos Básicos de Implantação
| Comando | Função |
|---|---|
| docker-compose up | Iniciar todos os serviços |
| docker-compose up -d | Iniciar serviços em modo desacoplado |
| docker-compose down | Parar e remover contentores |
| docker-compose scale | Escalar serviços específicos |
Exemplo de Implantação
## Navegar para o diretório do projeto
cd /path/to/project
## Construir e iniciar serviços
docker-compose up -d
## Visualizar contentores em execução
docker-compose ps
## Verificar logs de serviços
docker-compose logs web
## Escalar serviço específico
docker-compose up -d --scale web=3
Estratégias Avançadas de Implantação
version: "3.8"
services:
web:
image: myapp:latest
deploy:
replicas: 3
restart_policy:
condition: on-failure
networks:
- application_network
networks:
application_network:
driver: overlay
Comandos de Gestão de Serviços
## Parar serviço específico
docker-compose stop web
## Reiniciar serviços
docker-compose restart
## Remover todos os contentores
docker-compose down --rmi all
Resumo
Dominando o Docker Compose, os desenvolvedores podem simplificar arquiteturas de aplicações complexas, melhorar os fluxos de implantação e criar ambientes de contentores escaláveis e reproduzíveis. O tutorial fornece uma base sólida para compreender a configuração de serviços, a gestão de redes e a configuração declarativa de aplicações utilizando a poderosa ferramenta de orquestração do Docker.



