Taal Frankfurt, Duitsland

Deploy Elixir and Phoenix op Nodion

Nodion herkent een Elixir-app aan mix.exs. Het Elixir-buildpack haalt je dependencies op, voert mix assets.deploy uit als je project dat definieert en bouwt een Mix-release, die start met PHX_SERVER=true. Erlang en Elixir komen niet in de run-image terecht, en de app en de bijbehorende PostgreSQL-database draaien in Frankfurt.

Op Nodion deployen ›

vanaf 1 EUR / maand

Tot € 15 welkomsttegoed bij registratie

Herkend aan
mix.exs
Start
bin/<app> start uit de release
Elixir / OTP
Elixir 1.16 tot en met 1.20 (standaard 1.20), OTP 27 tot en met 29 (standaard 28)
Regio
EU Central (Frankfurt)

Elixir and Phoenix stap voor stap deployen

  1. Genereer de releasebestanden Nodion bouwt je app met mix release. In een Phoenix-project voegt mix phx.gen.release toe wat je daarvoor nodig hebt: een Release-module met een functie migrate en de scripts bin/server en bin/migrate. Commit de gegenereerde bestanden.
    mix phx.gen.release
  2. Lees de config tijdens runtime en luister op IPv4 Een project uit mix phx.new heeft al een bestand config/runtime.exs dat in productie PORT, SECRET_KEY_BASE, DATABASE_URL en PHX_HOST leest. De app-instanties van Nodion gebruiken IPv4, dus zet de ip van het endpoint op {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. Bouw assets zonder Node.js De Elixir-build heeft geen Node.js. Phoenix 1.7 en nieuwer gebruiken standalone binaries van esbuild en Tailwind, en Nodion voert je alias assets.deploy tijdens de build uit. Roept je asset-pipeline npm aan, stap dan over op deze tools of deploy met een Dockerfile. mix.exs
    "assets.deploy": [
      "tailwind my_app --minify",
      "esbuild my_app --minify",
      "phx.digest"
    ]
  4. Voer migraties uit via de release Mix zit niet in de run-image, dus migraties draaien via de release, die Nodion bouwt in /layers/nodion_elixir/release/release. Het script bin/migrate daarvan, uit stap 1, roept Release.migrate aan. Een release:-regel in een Procfile draait één keer per build voordat de nieuwe versie start; mislukt die, dan blijft de draaiende versie live. Procfile
    release: /layers/nodion_elixir/release/release/bin/migrate
  5. Maak de app, de database en de secrets aan Maak een applicatie aan vanuit je GitHub-, GitLab-, Bitbucket- of Gitea-repository in de regio EU Central en laat de buildstrategie op Buildpacks staan. Maak een PostgreSQL-database aan in dezelfde regio en koppel die op het tabblad Environment: bij de volgende deployment komt die binnen als DATABASE_URL. Voeg SECRET_KEY_BASE uit mix phx.gen.secret toe als secret en zet PHX_HOST op het domein dat je gebruikers openen. PORT stelt Nodion zelf in.

Goed om te weten

  • Zet Elixir en Erlang vastNodion leest elixir en erlang uit .tool-versions, Elixir ook uit .elixir-version. De eis elixir: in mix.exs is een bereik en legt niets vast. Zonder vaste versie krijg je Elixir 1.20 op OTP 28.
  • Startcommando en health checkNodion start bin/<app> start uit de release, met de appnaam uit mix.exs, en zet PHX_SERVER=true, zodat het endpoint HTTP serveert. Het verkeer gaat over zodra / antwoordt met 2xx of 3xx; vereist / een login, stel dan in de app-instellingen een ander pad voor de health check in.

Wat Nodion voor je regelt

  • Deploys zonder downtime Push naar je branch en Nodion bouwt een nieuwe release. Het verkeer schakelt over zodra de nieuwe instanties hun health check doorstaan; een mislukte release laat de draaiende versie staan. Apps met een lokaal volume herstarten in plaats daarvan, omdat de schijf bij één instantie hoort.
  • Databases naast de app Managed PostgreSQL, pgvector, MySQL, Valkey en ClickHouse in dezelfde regio. Gekoppelde databases komen binnen als DATABASE_URL, REDIS_URL of CLICKHOUSE_URL.
  • Previews per pull request Zet previews aan en pull requests uit je repository krijgen een eigen app met een eigen URL en nieuwe, lege databases, automatisch of handmatig aangemaakt. Forks en pull requests van bots worden overgeslagen.
  • Workers, cronjobs en schalen Draai workers als extra processen van dezelfde app, plan jobs op het tabblad Cron en schaal elk proces naar maximaal 16 instanties.
  • Releasestap Met buildpacks draait een release:-regel in het Procfile bij elke nieuwe build. Dockerfile-apps, en redeploys of rollbacks naar een eerdere image, gebruiken een releasecommando dat op de app zelf is ingesteld en dat ook voorrang heeft op de Procfile-regel. Bij statische sites draait een releasestap in een image die alleen de gebouwde bestanden bevat.
  • Logs en metrics Build-, release- en runtimelogs plus metrics voor CPU, geheugen, schijf en netwerk van elke instantie in het dashboard.
  • Domeinen en HTTPS Een standaardhostnaam met HTTPS vanaf de eerste deploy; je eigen domeinen krijgen automatisch certificaten.

Verder lezen

Elixir and Phoenix op Nodion: vragen en antwoorden

Heb ik een Dockerfile nodig voor Phoenix?

Nee. Het Elixir-buildpack bouwt een Mix-release uit mix.exs, zolang je assets zonder Node.js kunt bouwen. Staat er een Dockerfile in je repository, dan kiest het aanmaakformulier die strategie en bouwt Nodion in plaats daarvan de Dockerfile.

Hoe voer ik Ecto-migraties uit?

Via de release: genereer de Release-module met mix phx.gen.release en voeg release: /layers/nodion_elixir/release/release/bin/migrate toe aan een Procfile. Die regel draait één keer per build voordat de nieuwe versie start, en een fout stopt de deployment.

Welke versies van Elixir en Erlang/OTP zijn beschikbaar?

Elixir 1.16 tot en met 1.20 en Erlang/OTP 27 tot en met 29. Zonder vaste versie bouwt Nodion met Elixir 1.20 op OTP 28; zet beide vast in .tool-versions. Alleen de build gebruikt Erlang en Elixir, want de release brengt zijn eigen runtime mee.

Waar draait mijn Elixir and Phoenix-app?

In de regio EU Central in Frankfurt, Duitsland. Build, registry, de app en de bijbehorende databases, volumes, buckets, logs en metrics blijven in die regio, en de API en het control plane van Nodion worden in Duitsland gehost. Nodion GmbH is gevestigd in Stuttgart.

Kan ik Elixir and Phoenix gebruiken volgens de AVG (GDPR)?

Nodion biedt hiervoor de basis: Nodion GmbH is gevestigd in Stuttgart (Duitsland). Kies je de regio Frankfurt, dan draaien de app, de databases en de volumes in Duitsland. De verwerkersovereenkomst (DPA, art. 28 AVG) sluit je elektronisch af in het dashboard. Of je configuratie aan de AVG voldoet, hangt ook af van hoe je de app instelt en gebruikt.

Wat kost het om Elixir and Phoenix op Nodion te draaien?

Een appinstantie kost vanaf 1 EUR per maand. De configuratie in het kostenoverzicht kost 3.50 EUR per maand: App 2 EUR, PostgreSQL 1.50 EUR. Prijzen zijn excl. btw en worden per seconde gefactureerd, en je kiest grotere formaten of meer instanties wanneer je ze nodig hebt.

Kan ik een eigen domein gebruiken voor mijn Elixir and Phoenix-app?

Ja. Elke app krijgt een standaardhostnaam met HTTPS. Voeg je eigen domein toe op het tabblad Domains van de app; het TLS-certificaat wordt automatisch uitgegeven en vernieuwd.

Geef je agent een cloud.

Ontvang tot € 15 welkomsttegoed bij je registratie.

Doorgaan met GitHub

of met e-mail

Blijf op de hoogte.

Productnieuws, geen spam. Je kunt je altijd weer afmelden.