Pular para o conteúdo principal

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​

OrigemArquivos
Docker Composedocker-compose.yml, compose.yaml e o .env ao lado (usado na interpolação ${VAR})
Herokuapp.json e Procfile
Renderrender.yaml (Blueprint)
Railwayrailway.json ou railway.toml
Fly.iofly.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​

  1. No ambiente, clique em Migrar para a plataforma (ou abra a galeria de modelos do canvas e escolha Importar).
  2. Envie os arquivos (arrastar e soltar, seletor ou colar o conteúdo).
  3. 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.
  4. Baixe o relatório (JSON ou Markdown) ou o coda.yaml equivalente, se quiser versionar o resultado.
  5. 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, mongo e 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 como POSTGRES_PASSWORD sã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/app ou http://worker:9090 são reescritas para referências (${{ db.DATABASE_URL }}, ${{ worker.URL }}), e as arestas de rede são criadas só para depends_on e 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) e generateValue: 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_hosts e dns sã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​

  1. Preencha os segredos pendentes (os que a origem declarava sem valor).
  2. Aplique o grafo para fazer o deploy.
  3. Carregue os dados com a importação de dados ou a migração online.
  4. Faça a troca de DNS dos seus domínios.