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 App → Docker Compose. Cole o conteúdo do seu docker-compose.yml no editor.
Aqui está um exemplo de um arquivo compose típico para uma aplicação web com PostgreSQL e Redis:
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
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 registrobuild-- Não é importado. O sh0 recusa um serviço Compose que declarabuild: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 comimage.ports-- Expor portas (mapeadas pelo proxy reverso Caddy)commandeentrypoint-- Sobrescrever inicialização do contêinerdepends_on-- Ordenação de inicialização de serviçosrestart-- Políticas de reinicialização (always,unless-stopped,on-failure)healthcheck-- Health checks personalizadosdeploy.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.
volumes:
pgdata:
driver: local
uploads:
driver: local
services:
web:
volumes:
- uploads:/app/uploads
db:
volumes:
- pgdata:/var/lib/postgresql/dataServiç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.
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
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.
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