Docs/ Implantação/ Docker Compose

Docker Compose

Implante aplicações multi-contêiner colando seu docker-compose.yml diretamente no painel do sh0. O sh0 valida, provisiona e gerencia cada serviço na sua stack.

Visão Geral

Docker Compose é um formato padrão para definir aplicações multi-contêiner. O sh0 suporta implantar arquivos compose diretamente, convertendo cada serviço em um contêiner gerenciado com rede, volumes e variáveis de ambiente tratados automaticamente.

Isso é ideal para aplicações compostas por múltiplos serviços -- por exemplo, uma aplicação web com banco de dados, camada de cache e worker em segundo plano.

Implantando uma Stack Compose

Para implantar a partir de um arquivo compose, navegue até sua stack e selecione Novo AppDocker Compose. Cole o conteúdo do seu docker-compose.yml no editor.

Docker Compose editor in the sh0 dashboard with YAML input

Aqui está um exemplo de um arquivo compose típico para uma aplicação web com PostgreSQL e Redis:

docker-compose.yml
version: "3.8"

services:
  web:
    image: myapp:latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://user:pass@db:5432/myapp
      REDIS_URL: redis://cache:6379
    depends_on:
      - db
      - cache

  db:
    image: postgres:16
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: myapp

  cache:
    image: redis:7-alpine

volumes:
  pgdata:

Validação

Antes de implantar, o sh0 valida seu arquivo compose e reporta quaisquer problemas:

  • Erros de sintaxe YAML com números de linha
  • Diretivas desconhecidas ou não suportadas
  • Referências de imagem inválidas
  • Conflitos de porta com serviços existentes
  • Problemas de caminho de montagem de volume
Compose validation results showing a warning about port conflicts
Note
O sh0 valida seu arquivo compose em tempo real enquanto você digita. Erros aparecem inline no editor com sugestões de como corrigi-los.

Recursos Suportados

O sh0 suporta as diretivas do Docker Compose mais utilizadas. Aqui está um resumo do que está disponível.

Serviços

Cada serviço no seu arquivo compose se torna um contêiner gerenciado no sh0. Opções de serviço suportadas incluem:

  • image -- Puxar do Docker Hub ou de qualquer registro
  • build -- Não é importado. O sh0 recusa um serviço Compose que declara build: e diz o que fazer em vez disso: implantar esse serviço a partir do seu repositório Git (o sh0 constrói o Dockerfile por si próprio), ou publicar a imagem num registo e referenciá-la com image.
  • ports -- Expor portas (mapeadas pelo proxy reverso Caddy)
  • command e entrypoint -- Sobrescrever inicialização do contêiner
  • depends_on -- Ordenação de inicialização de serviços
  • restart -- Políticas de reinicialização (always, unless-stopped, on-failure)
  • healthcheck -- Health checks personalizados
  • deploy.resources -- Limites de CPU e memória

Volumes e Redes

Volumes nomeados são criados e gerenciados automaticamente pelo sh0. Os dados persistem entre reinicializações e reimplantações de contêineres.

Volume configuration
volumes:
  pgdata:
    driver: local
  uploads:
    driver: local

services:
  web:
    volumes:
      - uploads:/app/uploads
  db:
    volumes:
      - pgdata:/var/lib/postgresql/data

Serviços dentro de uma stack compose são automaticamente colocados em uma rede Docker compartilhada. Eles podem se comunicar pelo nome do serviço -- por exemplo, o serviço web pode se conectar a db:5432 sem nenhuma configuração adicional.

Variáveis de Ambiente

Variáveis de ambiente definidas no seu arquivo compose são importadas para o sh0. Você também pode sobrescrever ou adicionar variáveis pelo painel após a implantação.

Warning
Evite codificar segredos diretamente no seu arquivo compose. Em vez disso, use o painel de Variáveis de Ambiente do sh0 para definir valores sensíveis. Eles são criptografados em repouso e injetados na inicialização do contêiner.

Gerenciando Serviços

Uma vez implantado, cada serviço na sua stack compose aparece como uma aplicação individual dentro da sua stack sh0. Você pode gerenciar cada serviço de forma independente:

  • Visualizar logs em tempo real de cada serviço
  • Monitorar uso de CPU e memória por contêiner
  • Reiniciar serviços individuais sem afetar os outros
  • Abrir uma sessão de terminal em qualquer contêiner
  • Atribuir domínios personalizados a serviços específicos
Stack view showing three compose services (web, db, cache) with status indicators
Individual service detail view with logs, metrics, and terminal tabs
Tip
Você pode escalar serviços individuais de forma independente. Por exemplo, execute três instâncias do seu serviço web enquanto mantém uma única instância do banco de dados.

Atualizando Configuração Compose

Para atualizar sua configuração compose, navegue até sua stack e selecione Editar Compose. O sh0 compara sua nova configuração com a atual e determina quais serviços precisam ser recriados, atualizados ou removidos.

Compose diff view highlighting changes between current and updated configuration

Alterações são aplicadas incrementalmente:

  • Alteração de imagem: O serviço é reimplantado com a nova imagem
  • Alteração de variável de ambiente: O contêiner é reiniciado com as variáveis atualizadas
  • Novo serviço adicionado: Um novo contêiner é criado e iniciado
  • Serviço removido: O contêiner é parado (volumes de dados são preservados)
  • Alteração de porta: A configuração do proxy reverso é atualizada automaticamente
Note
Volumes nunca são excluídos durante atualizações de compose. Mesmo se você remover um serviço, seus volumes de dados permanecem disponíveis e podem ser reconectados depois.