Automatize Ambientes com Docker Compose: Guia Completo
Docker Compose: Orquestrando Contêineres com Eficiência
Configurar múltiplos contêineres de forma coordenada pode ser fundamental para rodar aplicações complexas, onde cada serviço (banco de dados, cache, API etc.) roda em um contêiner distinto, mas todos precisam se comunicar entre si. O Docker ComposeIntrodução ao Docker Compose: conceitos e benefíciosAprenda a orquestrar contêineres com Docker Compose, obtendo configurações unificadas e execução simplificada para ambientes de produção. oferece uma forma simples e poderosa de descrever toda essa orquestração em um único arquivo YAML, permitindo criar, escalar e gerenciar diversos serviços simultaneamente.
Neste tutorial, você aprenderá a:
- Construir uma estrutura de arquivo
docker-compose
.Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas..yaml
- Configurar redes, volumes
Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas. e variáveis de ambiente
Automatizando a implantação de ambientes com Docker ComposeDescubra como automatizar a implantação de ambientes com Docker Compose, garantindo consistência, escalabilidade e agilidade no desenvolvimento. para contêineres integrados.
- Iniciar e encerrar a aplicação multi-container com comandos simples.
- Adotar melhores práticas para organização e manutenção do ambiente.
Visão Geral e Objetivos🔗
O grande benefício do Docker ComposeIntrodução ao Docker Compose: conceitos e benefíciosAprenda a orquestrar contêineres com Docker Compose, obtendo configurações unificadas e execução simplificada para ambientes de produção. é a declaração única de todos os serviços, possibilitando:
- Versionar a configuração juntando todo o ambiente em um repositório.
- Integrar ferramentas de CI/CD e pipelines de build de maneira prática.
- Escalar serviços específicos sem reescrever a lógica de cada container.
Ao final, você terá uma aplicação web (como exemplo) e um banco de dados rodando de forma coordenada, com estrutura de rede, volumes para persistência e whole stack gerenciado via Docker ComposeIntrodução ao Docker Compose: conceitos e benefíciosAprenda a orquestrar contêineres com Docker Compose, obtendo configurações unificadas e execução simplificada para ambientes de produção..
Estrutura do Arquivo docker-compose.yaml🔗
O arquivo padrão é o docker-compose
ou Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas..yaml
docker-compose.yml
, onde definimos:Automatizando a implantação de ambientes com Docker ComposeDescubra como automatizar a implantação de ambientes com Docker Compose, garantindo consistência, escalabilidade e agilidade no desenvolvimento.
- version: versão do formato do Compose.
- services: cada serviço que compõe a aplicação.
- volumes
Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas. (opcional): configurações persistentes de dados.
- networks (opcional): redes personalizadas
Criando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação. para comunicação entre serviços.
- build (opcional): descrição de como criar imagens personalizadas.
Um esboço comum ficaria assim:
version: "3.9"
services:
servico1:
image: nome-da-imagem:tag
ports:
- "8080:80"
environment:
- VARIAVEL=valor
networks:
- minha-rede
volumes:
- meu-volume
Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas.:/caminho/no/container
servico2:
image: outro-servico:tag
environment:
- OUTRA_VARIAVEL=valor
depends_on:
- servico1
networks:
- minha-rede
volumes:
meu-volume:
networks:
minha-rede:
driver: bridge
Principais Campos
- version
Define a versão do schema do Docker ComposeIntrodução ao Docker Compose: conceitos e benefíciosAprenda a orquestrar contêineres com Docker Compose, obtendo configurações unificadas e execução simplificada para ambientes de produção.. Versões mais recentes suportam recursos avançados, como configs e secrets integrados.
- services
Cada chave logo abaixo de services
define um contêiner. Podemos configurar:
- image: nome e tag da imagem no Docker
Docker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. Hub ou num registry privado.
- build: instruções para construir a imagem localmente (substitui
image
). - ports: portas expostas. Ex.:
"8080:80"
. - environment: variáveis de ambiente
Automatizando a implantação de ambientes com Docker ComposeDescubra como automatizar a implantação de ambientes com Docker Compose, garantindo consistência, escalabilidade e agilidade no desenvolvimento. passadas ao contêiner.
- volumes
Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas.: ligações de volumes
Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas. ou diretórios do host ao contêiner.
- depends_on: ordem de inicialização (não substitui orquestração avançada, mas garante que um contêiner só suba após o outro estar disponível).

Definições de volumesVolumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas. nomeados. São úteis para persistir dados
Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas..
- networks
Permitem criar redes específicas para controle de isolamentoCriando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação. e comunicação entre serviços.
Exemplo Prático: Web + Banco de Dados🔗
Suponha que você queira desenhar um ambiente simples com:
- Um serviço web usando uma imagem Python (Flask) ou Node.js (Express).
- Um banco de dados PostgreSQL.
- A comunicação se dará por uma rede Docker
Docker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. interna.
- Um volume
Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas. persistirá os dados do banco.
Abaixo, um arquivo básico docker-compose
:Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas..yaml
version: "3.9"
services:
web:
image: node:18
container_name: webapp
working_dir: /app
volumes:
- ./app:/app
command: bash -c "npm install && npm start"
ports:
- "3000:3000"
depends_on:
- db
networks:
- app-network
db:
image: postgres:15
container_name: database
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=senha123
- POSTGRES_DB=meubanco
volumes:
- db-data:/var/lib/postgresql/data
networks:
- app-network
volumes:
db-data:
networks:
app-network:
driver: bridge
Passo a Passo
1. Crie um diretório para seu projeto.
2. Salve o arquivo acima como docker-compose
dentro desse diretório.Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas..yaml
3. Adapte conforme as versões e configurações necessárias para sua aplicação.
Então, para subir esse stack:
docker compose up -d
Dica: Caso seu Docker Compose ainda seja executado viadocker-compose
(traço), utilizedocker-compose up -d
.
O comando acima faz o build (se houver) e inicia os contêineres em segundo plano (-d
). Para checar os logs:
docker compose logs -f
E para encerrar e remover os contêineres, redes e volumesVolumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas. anônimos gerados:
docker compose down
Se quiser remover também volumes nomeados, use a flag -v
:
bash
docker compose down -v
Escalando Serviços🔗
Em cenários de demanda crescente, é possível replicar apenas um serviço usando:
docker compose up --scale web=3 -d
O Compose cria 3 contêineres do serviço web
, compartilhando a mesma imagem, rede e demais configurações. Assim, é fácil aumentar ou diminuir a capacidade de processamento da aplicação.
Melhores Práticas🔗
1. Nomear cada contêiner com container_name
, principalmente para facilitar identificação de logs.
2. Utilizar variáveis de ambienteAutomatizando a implantação de ambientes com Docker ComposeDescubra como automatizar a implantação de ambientes com Docker Compose, garantindo consistência, escalabilidade e agilidade no desenvolvimento. externas (ex.: arquivos
.env
) para separar configurações de credenciais do código.
3. Organizar o arquivo docker-compose
por serviços, volumesVolumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas..yaml
Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas. e redes de forma clara, usando comentários e nomes consistentes.
4. Manter versões compatíveis do Docker e do Compose. Em 2025, é comum encontrar a CLI DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. unificada (
docker compose
) com suporte a diversos recursos recentes.Introdução ao Docker Compose: conceitos e benefíciosAprenda a orquestrar contêineres com Docker Compose, obtendo configurações unificadas e execução simplificada para ambientes de produção.
5. Verificar a possibilidade de separar configurações de desenvolvimento, homologação e produção em múltiplos arquivos Compose (por exemplo, docker-compose
ou Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas..dev.yml
docker-compose
), mesclando-os quando necessário.Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas..prod.yml
6. Documentar bem as portas, redes e volumes usados, para que todos compreendam a arquiteturaDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos..
Conclusão🔗
O Docker ComposeIntrodução ao Docker Compose: conceitos e benefíciosAprenda a orquestrar contêineres com Docker Compose, obtendo configurações unificadas e execução simplificada para ambientes de produção. se mostra essencial para a configuração e gestão de aplicações que dependem de múltiplos contêineres interligados. Seu arquivo YAML centraliza toda a definição de serviços, redes e volumes
Volumes em Docker: conceitos e configuraçõesAprenda passo a passo a criar e configurar volumes Docker, assegurando persistência de dados e adotando práticas recomendadas para evitar perdas., além de viabilizar ajustes rápidos e escalonamento eficiente. Com as práticas sugeridas, desenvolvedores, equipes de DevOps e administradores de sistemas podem alinhar suas aplicações e infraestruturas de modo consistente, seguro e manutenível em 2025 e nos anos seguintes.
Destaque: Em um só arquivo docker-compose.yaml
, você descreve toda a arquitetura, facilitando o versionamento, a colaboração entre equipes e a implantação automatizada nos mais diversos ambientes.
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- Documentação oficial do Docker: docs.docker.com/
- Guia oficial do Docker Compose: docs.docker.com/compose/
- Repositório de imagens oficiais no Docker Hub: hub.docker.com/