Docker Compose
Prof. Lincon M. Peretto
The Matrix From Hell
Antes do Docker, desenvolvedores enfrentavam um pesadelo: múltiplas
aplicações, diferentes versões de linguagens, bibliotecas conflitantes e
ambientes inconsistentes entre desenvolvimento e produção.
O Docker Compose resolve esse problema orquestrando múltiplos
containers de forma simples e eficiente.
Introdução ao Docker Compose
O que é?
Ferramenta para definir e executar aplicações com múltiplos containers
usando um arquivo YAML ([Link]).
Facilita a orquestração, criação de redes, volumes e conexão entre
containers com um comando único.
Conceitos Principais
Serviços (services) Rede (network)
Containers configurados em um arquivo YAML Comunicação entre containers
Volume (data) Variáveis de Ambiente (environment)
Persistência de dados Configuração dos containers
Estrutura Básica do docker-
[Link] – Exemplo 1
version: "3"
services:
web:
image: nginx:alpine
ports:
- "8080:80"
Arquivo YAML simples que define serviços, imagens e portas para sua
aplicação.
Estrutura Básica do docker-
[Link] – Exemplo 2
services:
web:
image: nginx:alpine
volumes:
- ./[Link]:/usr/share/nginx/html/[Link]
ports:
- "8080:80"
O campo version foi descontinuado na versão 2 do Docker Compose,
portanto pode ser removido do arquivo.
Comandos Principais
Comando Função
docker compose up Criar e iniciar containers
docker compose up -d Rodar containers em background
docker compose down -v Parar e remover containers, redes, volumes
docker compose build Montar imagens
docker compose ps Listar containers ativos
docker compose restart [service] Reiniciar um ou todos os containers
Comandos Principais
A diferença entre docker compose stop e docker compose down -v é fundamental para o gerenciamento dos containers e
dos recursos:
docker compose stop
• Apenas interrompe os containers em execução.
• Os containers e seus dados de volumes, redes e configurações permanecem no Docker.
• Você pode usar docker compose start para reiniciar os mesmos containers rapidamente.
• Não remove volumes, redes ou containers, apenas interrompe a execução.
docker compose down -v
• Interrompe e remove todos os containers definidos no arquivo Compose.
• Remove as redes e remove volumes especificados pelo parâmetro -v (assim, dados persistidos nesses volumes são
excluídos).
• Não é possível reiniciar os mesmos containers, pois eles foram apagados.
• Ideal para quando você quer limpar totalmente o ambiente, inclusive volumes persistentes, ou começar do zero.
Atividade 1: WordPress + MySQL
01 02 03
Criar [Link] Executar Acessar
Defina serviços para db (MySQL) e wordpress com variáveis de docker compose up -d WordPress em [Link]
ambiente
name: "site"
services:
db: # Serviço de Banco de Dados MySQL
image: mysql:5.7 # Imagem Docker do MySQL
environment:
MYSQL_ROOT_PASSWORD: senha123 # Senha root do banco MySQL
MYSQL_DATABASE: wordpress
volumes:
- db_data:/var/lib/mysql # Persistência de dados
wordpress: # Serviço do WordPress
image: wordpress:latest # Imagem oficial do WordPress
depends_on:
- db # Garante que o banco inicie primeiro
ports:
- "8080:80" # Porta 8080 (externa) mapeada para 80 (container)
environment:
WORDPRESS_DB_HOST: db:3306 # Host de conexão do banco
WORDPRESS_DB_USER: root # Usuário do banco
WORDPRESS_DB_PASSWORD: senha123 # Senha do banco
WORDPRESS_DB_NAME: wordpress # Nome do banco
volumes:
db_data: # Volume nomeado para persistência do MySQL
Atividade 2: n8n
01 02 03
Criar [Link] Executar Acessar
Defina serviço para o n8n com variáveis de ambiente docker compose up -d n8n em [Link]
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true # ativa autenticação básica
- N8N_BASIC_AUTH_USER=usuario # usuário para login
- N8N_BASIC_AUTH_PASSWORD=senha123 # senha para login
- N8N_HOST=localhost # host do n8n
- N8N_PORT=5678 # porta
- N8N_PROTOCOL=http # protocolo
- NODE_ENV=production # ambiente
volumes:
- ./n8n_data:/home/node/.n8n # armazenamento persistente dos dados e workflows
Exercício: n8n + PostgreSQL
Criar diretório do projeto
Adicione um diretório chamado n8n
Criar arquivo docker-compose
Crie um arquivo contendo os serviços do n8n e do PostgreSQL
Testar funcionamento
Abra o n8n no navegador e faça login na plataforma
Enviar relatório
4
Elaborar relatório contendo: prints de tela da execução da atividade e
conteúdo do arquivo [Link]
Ferramentas Online
[Link]
[Link]
[Link]
Considerações Finais
Simplicidade Produtividade
Docker Compose simplifica o Facilita desenvolvimento,
gerenciamento de múltiplos testes e implantação de
containers com um único aplicações complexas.
arquivo de configuração.