Gerador de Docker Compose

Escrever um docker-compose.yml à mão significa lembrar a indentação exata, colocar entre aspas cada mapeamento de portas e saber qual cadeia de versão o seu binário do Compose entende. Este gerador permite definir serviços com campos simples: um nome, uma imagem, mapeamentos de portas host:contentor e volumes. Gera um ficheiro YAML válido com a especificação moderna do Compose (sem chave de versão) e padrões sensatos.

Como criar um ficheiro Compose

  1. 1

    Adicionar serviços

    Indique para cada serviço um nome, uma imagem, os mapeamentos de portas host:contentor e os volumes. Já existem dois serviços de exemplo preenchidos.

  2. 2

    Ajustar ou remover linhas

    Edite diretamente qualquer campo, adicione outro serviço com o botão + Service ou remova a linha que não precisar.

  3. 3

    Verificar o YAML gerado

    A pré-visualização atualiza enquanto escreve: os mapeamentos de portas ficam entre aspas e a chave de versão é omitida, como exige a especificação moderna do Compose.

  4. 4

    Copiar o ficheiro

    Copie o docker-compose.yml gerado e cole-o na raiz do seu projeto.

A especificação moderna do Compose

O Compose V2 (o plugin incluído no Docker Desktop e nos motores Docker modernos) segue a Compose Specification. A chave version: está obsoleta; o gerador omite-a. As chaves de nível superior são services, networks, volumes, configs e secrets.

Anatomia de um serviço

Um serviço orientado à produção tem este aspeto:

services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./public:/usr/share/nginx/html:ro
    depends_on:
      app:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3

Volumes: montagem de ligação ou volume nomeado

  • Montagem de ligação (./app:/var/www) liga o contentor a um caminho no host; excelente para o desenvolvimento local porque as alterações refletem-se de imediato.
  • Volume nomeado (pgdata:/var/lib/postgresql/data) é gerido pelo Docker e persiste independentemente de qualquer caminho do host; a escolha certa para bases de dados e para tudo o que não queira apagar por acidente com rm -rf.
  • Volume anónimo - evite. Sobrevive aos reinícios mas desaparece sem aviso com docker compose down -v.

Redes

Por omissão, o Compose cria uma rede com o nome do projeto e liga-lhe todos os serviços. Declarar redes explícitas é útil quando:

  • Pretende isolar uma base de dados de um serviço exposto ao público.
  • Precisa de uma ponte com uma sub-rede personalizada para alinhar com a infraestrutura existente.
  • Pretende ligar contentores a uma rede externa já existente (external: true).

Erros comuns a evitar

  • Conflitos de chave de versão. version: "3.8" no topo impede que funcionalidades recentes como start_interval do healthcheck funcionem no Compose antigo; o gerador omite a chave de versão.
  • Aspas nos portos. 8080:80 é interpretado como YAML em base 60 em alguns casos extremos; o gerador coloca sempre entre aspas os mapeamentos de portas.
  • Segredos escritos no código. Segredos escritos diretamente em compose.yml acabam no Git. Guarde-os num env_file ou no gestor de segredos da plataforma.
  • depends_on sem condição. Um depends_on: [db] simples espera o arranque do contentor, não que o serviço esteja pronto. Use condition: service_healthy e acrescente um healthcheck à dependência.

Perguntas frequentes

Para a Compose Specification atual (alinhada com o Docker Compose V2). O ficheiro omite a chave version:, que é como se escrevem os ficheiros Compose modernos. Funciona com Docker Compose V2.22 e versões posteriores.

Não através do formulário nesta versão. O gerador centra-se nas definições de serviços com imagem, portas e volumes. Pode adicionar redes, variáveis de ambiente, healthchecks e outras chaves ao YAML gerado à mão antes de o utilizar.

Não, esta ferramenta centra-se no compose.yml. Para Dockerfiles, use o Gerador de Dockerfile, que trata da escolha da imagem base e da ordem das instruções COPY/RUN para cinco tecnologias.

Não. As definições de serviços servem apenas para construir o YAML nesta página. Não são guardadas, carregadas nem partilhadas.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas