Cansado de abrir 10 terminais para rodar seus microserviços? Conheça o DCM.
Se você trabalha com arquitetura de microserviços, provavelmente já passou por isso: você chega de manhã, abre o computador e precisa rodar docker-compose up em três, cinco ou até dez repositórios diferentes para conseguir testar uma única funcionalidade.
O fluxo geralmente é:
cd services/auth -> docker-compose up -d
cd ../api -> docker-compose up -d
cd ../worker -> docker-compose up -d
... e por aí vai.
Além de ser tedioso, gerenciar a ordem de inicialização e o consumo de recursos de cada um desses contextos isolados pode se tornar um pesadelo logístico.
O que é o DCM?
O DCM (Docker Compose Manager) nasceu da necessidade de simplificar esse caos. É uma ferramenta de linha de comando (CLI) escrita em Go, projetada para gerenciar múltiplos contextos Docker Compose a partir de um único ponto de configuração.
Em vez de navegar por pastas, você define um workspace.json e deixa o DCM fazer o trabalho pesado.
Como funciona na prática?
Imagine que você tem a seguinte estrutura:
text
Projetos/
├── api-publica/
├── api-interna/
├── user-grpc/
└── order-grpc/
Com o DCM, você cria um arquivo de configuração central (workspace.json):
{
"version": "1.0",
"projects": {
"api-publica": {
"path": "./api-publica",
"description": "API pública REST (gateway externo)"
},
"api-interna": {
"path": "./api-interna",
"description": "API interna / BFF que fala com gRPC"
},
"user-grpc": {
"path": "./user-grpc",
"description": "Serviço gRPC de usuários"
},
"order-grpc": {
"path": "./order-grpc",
"description": "Serviço gRPC de pedidos"
}
},
"groups": {
"order": {
"description": "Fluxo de pedido usando todas as camadas (pública + interna + user-grpc + order-grpc)",
"services": [
"api-publica",
"api-interna",
"user-grpc",
"order-grpc"
]
},
"user": {
"description": "Fluxo simplificado usando apenas api-publica, api-interna e user-grpc (sem pedidos)",
"services": [
"api-publica",
"api-interna",
"user-grpc"
]
}
}
}
Agora, em vez de múltiplos terminais, você só precisa de um comando:
bash
dcm up order ou dcm up user
Principais Diferenciais
Inicialização Paralela (Lightning Fast): Graças à concorrência do Go, o DCM inicia os serviços simultaneamente, reduzindo drasticamente o tempo de espera em comparação ao processo manual sequencial.
Abstração por Grupos: Você pode criar grupos como test, backend-only ou full-stack, subindo apenas o necessário para cada tarefa.
Binário Standalone: Sem dependências de runtime (Node, Python, etc). É só baixar o binário e rodar.
Validação de Workspace: O comando dcm validate garante que seus caminhos e arquivos de compose estão corretos antes de tentar subir o ambiente.
Por que Go?
A escolha por Go foi estratégica: queria algo que fosse extremamente leve, rápido para lidar com processos de sistema e que pudesse ser distribuído como um único arquivo executável para Windows, Linux e macOS.
Se você quiser testar ou contribuir, o projeto está aberto no GitHub:
Faça o Download https://github.com/Disneyjr/dcm-cli/releases