Linguaggio Francoforte, Germania

Fai il deploy di Elixir and Phoenix su Nodion

Nodion riconosce un'app Elixir dal suo mix.exs. Il buildpack Elixir scarica le dipendenze, esegue mix assets.deploy se il tuo progetto lo definisce e crea una release Mix, che parte con PHX_SERVER=true. Erlang ed Elixir restano fuori dall'immagine di runtime, e l'app e il suo database PostgreSQL girano a Francoforte.

Fai il deploy su Nodion ›

da 1 EUR / mese

Fino a 15 € di credito di benvenuto alla registrazione

Riconosciuto da
mix.exs
Avvio
bin/<app> start dalla release
Elixir / OTP
Elixir da 1.16 a 1.20 (predefinita 1.20), OTP da 27 a 29 (predefinita 28)
Regione
EU Central (Francoforte)

Deploy di Elixir and Phoenix passo dopo passo

  1. Genera i file della release Nodion fa la build della tua app con mix release. In un progetto Phoenix, mix phx.gen.release aggiunge ciò che ti serve: un modulo Release con una funzione migrate e gli script bin/server e bin/migrate. Fai il commit dei file generati.
    mix phx.gen.release
  2. Leggi la configurazione a runtime e ascolta su IPv4 Un progetto creato con mix phx.new ha già un config/runtime.exs che in produzione legge PORT, SECRET_KEY_BASE, DATABASE_URL e PHX_HOST. Le istanze delle app su Nodion usano IPv4, quindi imposta l'ip dell'endpoint su {0, 0, 0, 0}: config/runtime.exs
    config :my_app, MyAppWeb.Endpoint,
      url: [host: host, port: 443, scheme: "https"],
      http: [ip: {0, 0, 0, 0}, port: port],
      secret_key_base: secret_key_base
  3. Fai la build degli asset senza Node.js La build Elixir non ha Node.js. Phoenix 1.7 e versioni successive usano i binari standalone di esbuild e Tailwind, e Nodion esegue il tuo alias assets.deploy durante la build. Se la tua pipeline degli asset chiama npm, passa a questi strumenti oppure fai il deploy con un Dockerfile. mix.exs
    "assets.deploy": [
      "tailwind my_app --minify",
      "esbuild my_app --minify",
      "phx.digest"
    ]
  4. Esegui le migrazioni dalla release Mix non è nell'immagine di runtime, quindi le migrazioni girano tramite la release, che Nodion crea in /layers/nodion_elixir/release/release. Il suo script bin/migrate del passo 1 chiama Release.migrate. Una riga release: in un Procfile viene eseguita una volta per ogni build prima che parta la nuova versione; se fallisce, la versione in esecuzione resta online. Procfile
    release: /layers/nodion_elixir/release/release/bin/migrate
  5. Crea l'app, il database e le variabili segrete Crea un'applicazione dal tuo repository GitHub, GitLab, Bitbucket o Gitea nella regione EU Central e lascia la strategia di build su Buildpacks. Crea un database PostgreSQL nella stessa regione e collegalo nella scheda Environment: arriva come DATABASE_URL al deploy successivo. Aggiungi SECRET_KEY_BASE come variabile segreta, generato con mix phx.gen.secret, e imposta PHX_HOST sul dominio che aprono i tuoi utenti. Nodion imposta PORT.

Da sapere

  • Fissa le versioni di Elixir ed ErlangNodion legge elixir ed erlang da .tool-versions, Elixir anche da .elixir-version. Il requisito elixir: in mix.exs è un intervallo e non fissa nessuna versione. Se non fissi una versione, ottieni Elixir 1.20 su OTP 28.
  • Comando di avvio e health checkNodion avvia bin/<app> start dalla release, con il nome dell'app preso da mix.exs, e imposta PHX_SERVER=true perché l'endpoint serva HTTP. Il traffico passa appena / risponde con 2xx o 3xx; se / richiede un login, imposta un altro percorso di health check nelle impostazioni dell'app.

Cosa gestisce Nodion per te

  • Deploy senza downtime Fai push sul tuo branch e Nodion crea una nuova release. Il traffico passa alle nuove istanze solo quando superano l'health check; una release fallita lascia attiva quella in esecuzione. Le app con un volume locale invece si riavviano, perché il disco appartiene a una sola istanza.
  • Database accanto all'app PostgreSQL, pgvector, MySQL, Valkey e ClickHouse gestiti, nella stessa regione. I database collegati arrivano come DATABASE_URL, REDIS_URL o CLICKHOUSE_URL.
  • Anteprime per ogni pull request Attiva le anteprime: ogni pull request del tuo repository riceve un'app dedicata, con un proprio URL e database nuovi e vuoti, creata automaticamente o manualmente. Le pull request dai fork e quelle dei bot vengono ignorate.
  • Worker, cron job e scalabilità Esegui i worker come processi aggiuntivi della stessa app, pianifica i job nella scheda Cron e scala ogni processo fino a 16 istanze.
  • Fase di release Con i buildpack, la riga release: del Procfile viene eseguita a ogni nuova build. Le app con Dockerfile, così come i redeploy e i rollback a un'immagine precedente, usano un comando di release impostato sull'app stessa, che ha anche la precedenza sulla riga del Procfile. Nei siti statici, la fase di release gira in un'immagine che contiene solo i file generati dalla build.
  • Log e metriche Nella dashboard trovi log di build, release e runtime, oltre alle metriche di CPU, memoria, disco e rete per ogni istanza.
  • Domini e HTTPS Un hostname predefinito con HTTPS dal primo deploy; i tuoi domini ricevono i certificati in automatico.

Per approfondire

Elixir and Phoenix su Nodion: domande e risposte

Mi serve un Dockerfile per Phoenix?

No. Il buildpack Elixir crea una release Mix da mix.exs, a patto che la build dei tuoi asset funzioni senza Node.js. Se il tuo repository ha un Dockerfile, il modulo di creazione sceglie quella strategia e Nodion fa la build del Dockerfile al suo posto.

Come eseguo le migrazioni Ecto?

Tramite la release: genera il modulo Release con mix phx.gen.release e aggiungi release: /layers/nodion_elixir/release/release/bin/migrate a un Procfile. Viene eseguito una volta per ogni build prima che parta la nuova versione, e un errore ferma il deploy.

Quali versioni di Elixir ed Erlang/OTP sono disponibili?

Elixir da 1.16 a 1.20 ed Erlang/OTP da 27 a 29. Se non fissi una versione, Nodion fa la build con Elixir 1.20 su OTP 28; fissale entrambe in .tool-versions. Erlang ed Elixir servono solo alla build, perché la release porta con sé il proprio runtime.

Dove gira la mia app Elixir and Phoenix?

Nella regione EU Central a Francoforte, in Germania. La build, il registry, l'app e i suoi database, volumi, bucket, log e metriche restano in quella regione. L'API e il control plane di Nodion sono ospitati in Germania. Nodion GmbH ha sede a Stoccarda.

Posso usare Elixir and Phoenix in modo conforme al GDPR?

Nodion offre le basi per farlo: Nodion GmbH ha sede a Stoccarda, in Germania; nella regione di Francoforte l'app, i suoi database e i volumi girano in Germania; puoi sottoscrivere il DPA (accordo sul trattamento dei dati, art. 28 GDPR) in formato elettronico nella dashboard. La conformità del tuo utilizzo dipende anche da come configuri e usi l'app.

Quanto costa l'hosting di Elixir and Phoenix su Nodion?

Un'istanza dell'app costa da 1 EUR al mese. La configurazione mostrata nel riquadro costa 3.50 EUR al mese: App 2 EUR, PostgreSQL 1.50 EUR. I prezzi sono IVA esclusa e la fatturazione è al secondo. Puoi scegliere dimensioni più grandi o più istanze quando ti servono.

Posso usare un mio dominio per la mia app Elixir and Phoenix?

Sì. Ogni app riceve un hostname predefinito con HTTPS. Aggiungi il tuo dominio nella scheda Domains dell'app; il certificato TLS viene emesso e rinnovato automaticamente.

Dai al tuo agente un cloud tutto suo.

Fino a 15 € di credito quando ti registri.

Continua con GitHub

oppure con l'email

Resta aggiornato.

Novità sul prodotto, niente spam. Puoi annullare l'iscrizione quando vuoi.