Gerador de Docker Compose
Crie um docker-compose.yml válido por formulário: serviços, imagens, portas, ambiente, volumes, depends_on e reinício, com predefinições de PostgreSQL, MySQL e Redis.
Segue a Compose Specification atual (sem a chave “version:”). Volumes nomeados são declarados automaticamente. Troque as senhas de exemplo antes de usar.
Ferramentas Relacionadas
Ver TodasO que é Gerador de Docker Compose?
Monte um docker-compose.yml para ambientes com vários contêineres sem brigar com a indentação do YAML. Adicione serviços a partir de predefinições (PostgreSQL, MySQL, Redis, MongoDB, Nginx, seu próprio app) ou comece do zero e preencha imagem ou contexto de build, portas, variáveis de ambiente, volumes, dependências, política de reinício e comando. O YAML é atualizado enquanto você digita e os erros são explicados.
Como usar Gerador de Docker Compose
- Edite os serviços de exemplo ou use Adicionar serviço para inserir uma predefinição.
- Para cada serviço, defina a Imagem (ou o Contexto de build), as Portas, o Ambiente, os Volumes, o Depende de e a Política de reinício.
- Corrija os problemas listados em vermelho (nomes, portas, variáveis ou dependências inválidos).
- Baixe o docker-compose.yml e execute
docker compose up -d.
Exemplo
Service app (build ., port 3000, NODE_ENV=production, depends on db) + PostgreSQL preset
services:
app:
build: .
restart: unless-stopped
ports:
- "3000:3000"
environment:
NODE_ENV: production
depends_on:
- db
db:
image: postgres:16-alpine
restart: unless-stopped
ports:
- "5432:5432"
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: change-me
POSTGRES_DB: app
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata: {} Quando usar Gerador de Docker Compose
Use-o para montar stacks de desenvolvimento local, demos e implantações simples em um único host. Em produção, você normalmente vai acrescentar health checks, limites de recursos, segredos e redes à mão, ou usar um orquestrador como o Kubernetes. Troque as senhas de exemplo das predefinições antes de usá-las em qualquer lugar.
Como funciona Gerador de Docker Compose
O formulário é convertido em um objeto que segue a Compose Specification atual (sem a chave obsoleta version:) e serializado em YAML com js-yaml. Os mapeamentos de porta ficam entre aspas, porque valores sem aspas como 22:22 podem ser lidos como números na base 60 por parsers YAML 1.1. Linhas de ambiente KEY=value viram um mapeamento, e qualquer volume cuja origem seja um nome em vez de um caminho (por exemplo pgdata:/var/lib/postgresql/data) é declarado automaticamente na chave de nível superior volumes:. Nomes de serviços, formatos de portas, a sintaxe KEY=value e os alvos de depends_on são validados.
Casos de Uso Comuns
- Rodar um app com PostgreSQL e Redis localmente
- Compartilhar um ambiente de desenvolvimento reproduzível com a equipe
- Criar um arquivo compose para uma ferramenta auto-hospedada
- Aprender a sintaxe do Compose com exemplos
Nota de Segurança
Publicar portas de banco de dados (por exemplo 5432:5432) as expõe em todas as interfaces do host. Em servidores, remova o mapeamento de porta ou vincule a 127.0.0.1, e use senhas fortes ou segredos.
Perguntas Frequentes
Por que não há a linha version:?
A chave version é obsoleta na Compose Specification usada pelo Docker Compose v2; as versões atuais a ignoram e mostram um aviso.
O depends_on espera o banco de dados ficar pronto?
Não, ele só controla a ordem de inicialização. Acrescente um healthcheck e condition: service_healthy, ou tente reconectar no seu app.
Qual a diferença entre um volume nomeado e um bind mount?
Um volume nomeado (pgdata:/path) é gerenciado pelo Docker e sobrevive à recriação do contêiner; um bind mount (./data:/path) mapeia uma pasta da sua máquina.