Importar Compose, Heroku, Render, Railway e Fly.io
A importação lê os manifestos que você já tem e monta um plano: cada serviço da origem vira um nó do grafo do ambiente (aplicação, banco gerenciado, cache, fila, volume, job ou cron job), com as conexões mínimas entre eles. Nada muda no ambiente enquanto você revisa. Quando você aplica, o plano entra no rascunho do grafo em uma única mudança; o deploy só acontece quando você aplica o grafo, como em qualquer outra alteração.
Formatos aceitos
| Origem | Arquivos |
|---|---|
| Docker Compose | docker-compose.yml, compose.yaml e o .env ao lado (usado na interpolação ${VAR}) |
| Heroku | app.json e Procfile |
| Render | render.yaml (Blueprint) |
| Railway | railway.json ou railway.toml |
| Fly.io | fly.toml |
Limites de cada análise: até 5 arquivos de uma mesma plataforma, 512 KiB por arquivo e 50 serviços. Arquivos YAML com âncoras que se expandem demais, tags de linguagem (!!python/...) ou manifestos do Kubernetes são recusados com o código e a linha do problema.
Pelo portal
- No ambiente, clique em Migrar para a plataforma (ou abra a galeria de modelos do canvas e escolha Importar).
- Envie os arquivos (arrastar e soltar, seletor ou colar o conteúdo).
- Revise o plano: renomeie nós, exclua itens, escolha a versão e o tamanho dos bancos, informe a imagem dos serviços que eram construídos a partir do código e reclassifique variáveis entre variável e segredo.
- Baixe o relatório (JSON ou Markdown) ou o
coda.yamlequivalente, se quiser versionar o resultado. - Clique em Aplicar ao rascunho. O canvas abre com o diff do que foi adicionado.
Os arquivos não ficam guardados: o plano guarda só um resumo (hash) e a aplicação pede os mesmos arquivos de novo. Se eles mudaram, a aplicação é recusada com import.source_changed.
Pela CLI
coda import analyze -f docker-compose.yml -f .env # cria o plano e mostra o resumo
coda import report <plano> --format md # relatório item a item
coda import analyze -f docker-compose.yml -o coda.yaml # grava o coda.yaml equivalente
coda import apply <plano> -f docker-compose.yml -f .env # grava o plano no rascunho
coda import status <plano>
Pela API, o mesmo fluxo é POST .../environments/{id}/imports, PATCH .../imports/{id} (com If-Match) e POST .../imports/{id}/apply (com X-Graph-Draft-Version). Assistentes de IA usam as ferramentas analyze_import, get_import e apply_import do servidor MCP.
O que vira o quê
- Bancos, caches e filas conhecidos (imagens
postgres,mysql,mariadb,redis,valkey,rabbitmq,mongoe os add-ons equivalentes do Heroku e do Render) viram serviços gerenciados. A versão é a mesma do catálogo ou a mais próxima acima; credenciais comoPOSTGRES_PASSWORDsão descartadas, porque a plataforma gera a credencial do nó. Para manter o contêiner como aplicação, marque Manter como contêiner na revisão. - Conexões como
postgres://user:senha@db:5432/appouhttp://worker:9090são reescritas para referências (${{ db.DATABASE_URL }},${{ worker.URL }}), e as arestas de rede são criadas só paradepends_one para essas referências. Uma rede do Compose compartilhada por todos não vira uma malha completa. - Volumes nomeados viram volumes do grafo, com um único consumidor cada. Volumes usados só por um banco reconhecido são descartados (os dados vão pela importação de dados).
- Segredos: variáveis com nome ou valor de credencial vão para o cofre já com o caminho final do nó; o plano guarda só um prefixo de 8 caracteres do hash para você reconhecer o valor.
generator: secret(Heroku) egenerateValue: true(Render) viram segredos gerados na aplicação. - Recursos: CPU e memória são ajustados aos limites da plataforma. Escala a zero vira escala mínima de 1 instância, com aviso.
- Segurança:
privileged,network_mode: host,pid/ipc: host, dispositivos, montagens do host e o socket do Docker recusam o serviço inteiro.cap_add,security_opt,sysctls,ulimits,extra_hostsednssão descartados com aviso.
O relatório classifica cada item como convertido, convertido com mudanças, não suportado, recusado ou ignorado, sempre com o arquivo, a linha e o motivo.
Variáveis de um .env em lote
Na aba de variáveis de um nó (ou nas variáveis compartilhadas do ambiente), Importar .env mostra uma prévia por chave: adicionar, atualizar, sem mudança ou inválida, e se a chave vira variável ou segredo. Escolha se as chaves que já existem são mantidas ou sobrescritas e confirme. Pela CLI: coda env import .env --node api (use --overwrite para sobrescrever e --shared para as variáveis do ambiente).
Depois da importação
- Preencha os segredos pendentes (os que a origem declarava sem valor).
- Aplique o grafo para fazer o deploy.
- Carregue os dados com a importação de dados ou a migração online.
- Faça a troca de DNS dos seus domínios.