Cole um arquivo Compose para ver o inventário de serviços e os achados de um linter estrutural local. O YAML é analisado no navegador: nada é enviado, o daemon do Docker não é consultado e o Compose não é executado.
Funciona localmente no seu navegadorCole compose.yaml ou docker-compose.yml. A análise e as verificações são executadas localmente no navegador.
É um linter estrutural local. Não baixa imagens, não inspeciona o daemon do Docker, não resolve variáveis de ambiente nem executa o Compose.
| Serviço | Imagem / build | Portas | Depende de |
|---|---|---|---|
| Nenhum arquivo Compose foi validado ainda. | |||
Cole um compose.yaml ou docker-compose.yml e clique em Validar arquivo Compose. A página analisa o documento no navegador e mostra duas listas: os avisos agrupados por gravidade, com o caminho da chave problemática em cada linha (por exemplo services.db.ports[0]), e um inventário de serviços com a imagem ou a origem de build, as portas publicadas e os destinos de depends_on.
O exemplo embutido (api e db, cada um com um volume nomeado) termina como «pronto para revisar», porque nada impede um docker compose up. Já uma porta usada por dois serviços, um depends_on que aponta para um serviço inexistente ou um ciclo como a → b → a são reportados como erros.
Estrutura: services precisa ser um mapa com pelo menos um serviço, cada serviço precisa ser um objeto e os nomes só aceitam letras, números, pontos, sublinhados e hífens; o Compose recusa o resto. image precisa ser um texto não vazio e build um caminho ou objeto; um serviço sem nenhum dos dois é sinalizado, porque não tem como executar.
Portas: a porta do contêiner precisa estar entre 1 e 65535, e a porta publicada pode ser um número ou uma faixa como 8000-8005. O linter marca portas fora do intervalo ou não numéricas, protocolos diferentes de tcp, udp ou sctp, e qualquer porta duplicada ou sobreposta, tanto dentro de um serviço quanto entre dois. Usar network_mode: host com portas publicadas gera um aviso, porque esses mapeamentos são ignorados em tempo de execução.
depends_on pode ser uma lista ou um mapa; cada destino precisa existir e o grafo não pode ter ciclos, então a → b → a ou um serviço dependendo de si mesmo são reportados com o ciclo completo. container_name e privileged: true entram como avisos porque dificultam o escalonamento ou ampliam o acesso ao host além do que a maioria dos serviços precisa.
Volumes nomeados usados por um serviço precisam ser declarados no mapa volumes do nível superior. O analisador local resolve âncoras e aliases, e <<: *common é mesclado no serviço quando aponta para um mapa, então uma imagem que só chega pela chave de mesclagem também aparece no inventário; se a mesclagem não puder ser resolvida, a linha informa isso em vez de acusar imagem ausente.
Nada é executado: a página nunca roda docker compose, não acessa o daemon do Docker e não baixa imagens. Variáveis como ${POSTGRES_PASSWORD} não são resolvidas, arquivos .env não são lidos e o comportamento de profiles ou extends é verificado apenas como estrutura. Diferenças entre versões do Compose não são simuladas, então confirme o arquivo final na versão que você usa para implantar.
O documento é analisado no seu navegador: o texto colado não é enviado e a validação continua funcionando sem conexão. Arquivos muito grandes ficam limitados pela memória do seu dispositivo, e apenas um documento é lido por vez — um arquivo com um segundo documento --- é recusado com o número da linha.