Kinsta bietet Nixpacks, ein Open-Source-Projekt, das von Railway gepflegt wird, als eine der Optionen an, um das Container-Image deiner Anwendung automatisch auf Basis deines Repositorys zu erstellen. Nixpacks sind Skripte, die beim Deployment deiner Anwendung ausgeführt werden, um Abhängigkeiten für deine Anwendung zu installieren und deine Umgebung zu konfigurieren.

Wir empfehlen die Verwendung von Nixpacks, weil sie weniger Ressourcen verbrauchen und mehr als 20 Sprachen unterstützen. Du kannst Nixpacks auswählen, wenn du eine Anwendung hinzufügst oder indem du die Option Build Umgebung in den Anwendungseinstellungen änderst (Einstellungen > Grundlegende Details > Details bearbeiten).

Unterstützte Sprachen

Nixpacks unterstützt die folgenden Sprachen:

  • Clojure
  • Cobol
  • Crystal
  • C#/.NET
  • Dart
  • Deno
  • Elixier
  • F#
  • Go
  • Haskell
  • Java
  • Lunatic
  • Node
  • PHP
  • Python
  • Ruby
  • Rust
  • Staticfile
  • Swift
  • Scala
  • Zig

Wenn du eine andere Sprachversion verwenden möchtest, gibst du die Version in den Dateien deiner Anwendung an.

Wenn du Nixpacks verwendest, ist es normalerweise nicht nötig, verschiedene Provider für den Build auszuwählen oder hinzuzufügen, da sie automatisch erkannt werden. Wenn du zusätzliche Provider für deine Anwendung benötigst, kannst du diese in einer Nixpacks-Konfigurationsdatei festlegen.

Wenn du eine Sprache verwenden möchtest, die nicht von Nixpacks oder Buildpacks unterstützt wird, musst du ein Dockerfile verwenden. Wenn du deine Anwendung hinzufügst, kannst du die Option Dockerfile zum Einrichten des Container-Images verwenden auswählen.

Nixpacks konfigurieren

Einige Anwendungen müssen nicht konfiguriert werden, aber einige benötigen spezielle Befehle und Optionen, um ausgeführt zu werden, wie z. B:

Umgebungsvariablen – Möglicherweise musst du bestimmte Umgebungsvariablen setzen, um deine Anwendung auszuführen.

Prozesse – Kinsta kann deinen Webprozessbefehl automatisch erkennen. Du kannst dies bei Bedarf ändern und zusätzliche Prozesse definieren.

Prozesse in einem Procfile – Vielleicht möchtest du deine Prozesse in einem Procfile im Code deiner Anwendung definieren.

Nixpacks Binärverzeichnisse

Bei Nixpacks können die Binärverzeichnisse von den Standard-Binärverzeichnissen für die Anwendungssprache abweichen. Die folgende Tabelle zeigt die Binärverzeichnisse, die für einige der gängigsten Sprachen verwendet werden:

Sprache Verzeichnis
Node.js /nix/var/nix/profiles/default/bin/node
Ruby /nix/var/nix/profiles/default/bin/ruby
Python /nix/var/nix/profiles/default/bin/python
Java /nix/var/nix/profiles/default/bin/java
Scala Scala hat keinen bestimmten Standard-Binärpfad wie einige andere kompilierte Sprachen. Wenn du ein Scala-Programm kompilierst, wird Bytecode erzeugt, der auf der Java Virtual Machine (JVM) ausgeführt wird.

Die kompilierten Scala-Klassen werden normalerweise in einer Verzeichnisstruktur gespeichert, die die Paketstruktur deines Codes widerspiegelt. Das ist ähnlich wie bei der Organisation von Java-Klassen. Wenn du eine Scala-Quelldatei kompilierst, werden die kompilierten Klassendateien standardmäßig im gleichen Verzeichnis wie der Quellcode abgelegt (in einer Unterverzeichnisstruktur, die auf den Paketdeklarationen basiert).

Bei Bedarf kannst du die Scala-Laufzeitwerkzeuge auch mit einer Dockerdatei installieren, anstatt ein Nixpack zu verwenden.

PHP /nix/var/nix/profiles/default/bin/php
Go Go hat keinen bestimmten Standard-Binärpfad wie einige andere kompilierte Sprachen. Wenn du ein Go-Programm kompilierst, wird die daraus resultierende ausführbare Binärdatei normalerweise im gleichen Verzeichnis wie dein Quellcode abgelegt.

Bei Bedarf kannst du die Laufzeitwerkzeuge von Go mit einer Dockerdatei installieren, anstatt ein Nixpack zu verwenden.

Verwandte Dokumentation