Fundamentos do Docker Compose
Introdução ao Docker Compose
Docker Compose é uma ferramenta poderosa para orquestração de contêineres, permitindo que desenvolvedores definam e gerenciem aplicações multi-contêiner através de um único ficheiro de configuração. Simplifica o processo de execução de arquiteturas de aplicações complexas, permitindo descrever serviços, redes e volumes de forma declarativa.
Conceitos e Arquitetura Core
Docker Compose utiliza ficheiros YAML para configurar serviços de aplicação, proporcionando uma abordagem simplificada à configuração de serviços de contêiner. O ficheiro de configuração principal normalmente é nomeado docker-compose.yml.
graph TD
A[Docker Compose] --> B[Configuração YAML]
B --> C[Definições de Serviço]
B --> D[Configurações de Rede]
B --> E[Mapas de Volume]
Estrutura do Ficheiro de Configuração
Uma configuração típica do Docker Compose inclui elementos chave:
| Elemento |
Descrição |
Exemplo |
| version |
Versão do ficheiro Compose |
version: '3.8' |
| services |
Definições de contêiner |
Múltiplas configurações de serviço |
| networks |
Configurações de rede personalizadas |
Rede Bridge, rede host |
| volumes |
Armazenamento de dados persistentes |
Volumes nomeados ou montados no host |
Exemplo Prático: Configuração de Aplicação Web
Aqui está uma configuração completa do Docker Compose para uma aplicação web típica:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./website:/usr/share/nginx/html
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: secretpassword
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
Operações na Linha de Comando
Comandos essenciais do Docker Compose para gerenciar aplicações multi-contêiner:
## Iniciar serviços definidos em docker-compose.yml
docker-compose up -d
## Parar e remover contêineres
docker-compose down
## Visualizar contêineres em execução
docker-compose ps
## Visualizar logs de serviço
docker-compose logs web
Gestão de Dependências de Serviços
Docker Compose permite definir dependências de serviços para controlar a sequência de inicialização:
services:
web:
depends_on:
- database
restart: on-failure
Esta configuração garante que o serviço de banco de dados é iniciado antes do serviço web, com capacidades automáticas de reinício.