Quem pode criar
- Contas em um plano que pode criar imagens Docker personalizadas podem criar templates privados, tanto de código quanto de imagem. Criar exige o plano; usar, editar e excluir o que você já tem, não.
- Cada usuário pode ter até 5 templates privados, contando os pessoais e os de workspaces dos quais é dono. Além disso, a criação falha com
TEMPLATE_PRIVATE_LIMIT_REACHED. - Em um workspace, apenas o dono cria e gerencia templates e os usa para fazer deploy. Os membros veem os templates do workspace, mas não podem criá-los nem usá-los para fazer deploy (
WORKSPACE_OWNER_ONLY). Um template de workspace só faz deploy dentro do próprio workspace: apontá-lo para a sua conta pessoal ou para outro workspace resulta emTEMPLATE_NOT_FOUND. - Um template pessoal pode ser movido para um workspace do qual você é dono.
Forma 1: Salvar como template
Este é o caminho principal. Abra um app ou uma stack, escolha Salvar como template e revise o que entra. A revisão é obrigatória. Variáveis. Cada variável do app vira uma decisão:
Variáveis que parecem segredos (
*_KEY, *_TOKEN, *_SECRET, PASSWORD, ou um valor com formato de credencial) vêm desmarcadas e sinalizadas, e a plataforma se recusa a manter um valor que pareça uma credencial. Variáveis que a plataforma controla, como PORT, ficam de fora. A revisão mostra apenas nomes; os valores nunca são exibidos.
Arquivos. Para um app com código, você vê a árvore de /app (até três níveis) e escolhe o que entra. Por padrão, estes não vêm selecionados, e arquivos .env*, a pasta .vertra/ e pastas de dependências (node_modules, .venv, vendor) nunca podem ser incluídos, mesmo que você os marque:
Um app que roda uma imagem sua salva essa imagem como origem. Um app que veio de um link de compartilhamento ou de um template com imagem do sistema não pode ser salvo (
TEMPLATE_SAVE_NOT_ALLOWED), e um app de um template fechado também não (TEMPLATE_CLOSED). Uma stack vira um template com um serviço por membro; as variáveis criadas por suas conexões viram placeholders do serviço correspondente, e cada pasta Blob da stack vira um serviço blob.
Forma 2: Um repositório do GitHub
Coloquevertracloud.template.yaml na raiz de um repositório que esteja em uma das suas instalações do GitHub App e vincule-o ao template:
- Faça o template ser criado (por exemplo, com Salvar como template ou pela CLI).
- Vincule o repositório a ele, com uma branch opcional (padrão: a branch padrão do repositório).
- Cada push nessa branch cria uma nova versão. O número da versão vem do manifesto, então aumente
versionquando quiser uma nova versão; um push com o mesmo número ou um menor é ignorado comVERSION_NOT_NEWER.
source.path; a mensagem do commit vira o changelog e o README.md da raiz vira a documentação. Se o manifesto não for encontrado, você recebe TEMPLATE_GITHUB_MANIFEST_NOT_FOUND, e um repositório já vinculado a um template de outro dono resulta em REPO_ALREADY_LINKED. Pushes que não criam versão retornam um motivo (MANIFEST_INVALID, TEMPLATE_ID_MISMATCH, SOURCE_REJECTED, BRANCH_IGNORED) em vez de falhar em silêncio.
Forma 3: O editor
O editor no dashboard edita perguntas, requisitos e permissões com validação ao vivo contra o schema do manifesto, e envia uma nova versão com um zip por serviço de código. A CLI faz o mesmo a partir de uma pasta:source.path: o .vertraignore é respeitado (ou o .dockerignore, na ausência dele), e .env*, .git, .vertra e links simbólicos nunca são enviados. Cada serviço é um zip de até 100 MB. Veja Validar e testar.
Origens de imagem
Em um template privado,source.image é o id de uma das suas próprias imagens com uma boa versão, não um endereço de registry. A plataforma fixa essa versão quando a versão do template é criada. Uma imagem do sistema, uma cópia recebida por um link ou uma imagem de outra conta não é aceita (IMAGE_NOT_FOUND). Você não pode excluir uma imagem que é a origem da versão atual de um template: ela responde IMAGE_IN_USE com os templates que a usam.
Versões
Uma versão é imutável: seu manifesto e suas origens nunca mudam. Para mudar qualquer coisa, publique uma nova versão com um número maior; oid do manifesto deve continuar o mesmo, e um número que você usou e excluiu continua reservado. A versão atual do template é a mais recente. Quem roda uma versão anterior recebe a opção Atualizar e decide quando adotá-la. Mudar apenas o nome, a descrição, a categoria ou as tags de um template não cria uma versão.
Excluir um template é uma exclusão lógica: revoga seus links de compartilhamento, mantém as versões e os apps criados a partir dele em execução (eles veem que o autor removeu o template) e libera o slug.
Erros comuns
Relacionados
Compartilhar por link
Deixe outra conta usar o seu template privado.
Template fechado para um cliente
Um tutorial passo a passo.