Sua Primeira Implantação
Coloque o seu próprio código no ar a partir de um diretório da sua máquina, sem repositório Git. Cada comando abaixo foi executado num servidor sh0, com a saída real.
Visão Geral
O sh0 faz o deploy de uma aplicação a partir de quatro origens. Este guia segue a primeira, que serve para a maioria dos projetos:
- Um diretório da sua máquina, enviado por
sh0 pushcomo arquivo compactado -- o seu código, com um Dockerfile ou uma stack detectada (Node.js, Python, Go, Rust, PHP…). - Um arquivo ZIP enviado pelo painel.
- Um repositório Git, público ou privado, clonado pelo servidor.
- Um modelo do catálogo (bancos de dados, CMS, ferramentas).
Etapa 1: preparar o diretório
Um Dockerfile na raiz dá controle total sobre a imagem. Sem ele, o sh0 detecta a stack pelos arquivos do projeto. A aplicação precisa escutar numa porta, aqui a 3000:
FROM node:20-alpine
WORKDIR /app
COPY server.js .
EXPOSE 3000
CMD ["node","server.js"]sh0 check pontua o diretório antes de qualquer envio e aponta o que corrigir. sh0 push faz a mesma verificação e para diante de um problema bloqueante (exceto com --no-check); avisos não o interrompem:
$ sh0 check .
Scanning /home/you/my-api
Detected: Dockerfile
Health Score: 95/100
Complexity: 2 (Simple)
[~] Warnings (1):
- Missing .dockerignore
Fix: Create a .dockerignore file with: node_modules, .git, dist, .env
1 issue(s): 0 blocking, 1 warnings, 0 auto-fix, 0 infoEtapa 2: conectar a CLI
Instale a CLI na sua máquina (veja Instalação da CLI) e execute sh0 login --url https://panel.example.com com o endereço do seu painel. Ela pede o seu e-mail e a sua senha (e o código 2FA, se ativado) e grava uma chave de API em ~/.sh0/config.toml.
Verifique a conexão:
$ sh0 whoami
Server: https://panel.example.com
User: [email protected]
Role: ownerEtapa 3: enviar
A partir do diretório do projeto:
$ sh0 push -n my-api --port 3000
Deploying my-api
Detected dockerfile -- 95/100 health
2 files (0.0 MB) packaged
Uploading OK 5ms
Routing OK 10.0s
[ok] Live in 10.0s
-> https://my-api-<instance>.sh0.app-ndá nome à aplicação; sem ele, usa-se o nome do diretório. O mesmo nome depois atualiza a mesma aplicação.--porté a porta em que a sua aplicação escuta dentro do contêiner.- Um arquivo compactado é limitado a 500 MB. Adicione um
.dockerignorepara excluirnode_modules,.gite os artefatos de build; veja Deploy com push para os outros limites.
Etapa 4: verificar
A última linha de sh0 push é o endereço da aplicação. Num servidor ligado ao proxy em nuvem do sh0, é um subdomínio *.sh0.app com HTTPS; para o seu próprio domínio, veja a etapa 6.
$ sh0 status my-api
App: my-api
------------------------------
ID: 85aab295-4166-470a-9538-807b46e8bec3
Status: running
...
Latest Deployment
------------------------------
ID: 551c1602-5a46-49eb-93df-70ee831cfea3
Status: running
Duration: 37.9s
When: 39s ago
$ curl -s https://my-api-<instance>.sh0.app/
{"db":true,"version":2,"greeting":"salut"}Se a aplicação não responder, leia os logs com sh0 logs my-api --tail 100, ou abra a aplicação no painel e veja o log de build do deploy.
Etapa 5: atualizar
Altere o código e execute de novo o mesmo sh0 push -n my-api --port 3000: o sh0 constrói uma imagem nova e substitui o contêiner em execução quando o novo estiver pronto. A atualização acima levou 38 segundos, e a aplicação respondeu com a nova versão.
Etapa 6: o seu próprio domínio
Aponte um registro A do seu domínio para o endereço IP do servidor e adicione-o à aplicação, pela aba Domínios da aplicação ou com sh0 domains my-api add api.example.com. O sh0 solicita o certificado TLS ao Let's Encrypt. Detalhes em Domínios personalizados.
Pelo painel
Abra Implantar na barra lateral e escolha uma origem:
- Enviar arquivo -- um arquivo ZIP do seu projeto.
- URL Git ou GitHub -- um repositório e um branch.
- Modelo -- uma aplicação do catálogo.
Próximos Passos
A sua aplicação está no ar. Próximos passos:
Aprenda sobre Stacks
Entenda como organizar múltiplas aplicações e serviços.
Variáveis de Ambiente
Adicione configuração e segredos à sua aplicação.
Domínios e SSL
Configure domínios personalizados e entenda a automação de SSL.
Adicionar um Banco de Dados
Crie um servidor PostgreSQL, MySQL, MariaDB ou Redis e conecte a sua aplicação a ele.