Nixpacks

Bij Kinsta kan je gebruik maken van Nixpacks, een open-source project dat wordt onderhouden door Railway, als een van de opties om automatisch de container images van je applicatie te maken op basis van je repository. Nixpacks zijn scripts die worden uitgevoerd wanneer je applicatie wordt ingezet om dependencies voor je applicatie te installeren en je omgeving te configureren.

We raden aan om Nixpacks te gebruiken omdat ze minder bronnen gebruiken en meer dan 20 talen ondersteunen. Je kunt Nixpacks kiezen wanneer je een applicatie toevoegt of door de optie Build omgeving te wijzigen in de applicatie-instellingen (Instellingen > Basisgegevens > Details bewerken).

Ondersteunde talen

Nixpacks ondersteunt de volgende talen:

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

Om een andere taalversie te gebruiken, stel je de versie in de bestanden van je applicatie in.

Als je Nixpacks gebruikt, is het meestal niet nodig om verschillende providers te kiezen of toe te voegen voor de build, omdat ze automatisch worden gedetecteerd. Als er extra providers nodig zijn voor de applicatie, dan kun je die definiëren in een Nixpacks configuratiebestand.

Als je een taal wilt gebruiken die geen ondersteunde Nixpacks of buildpacks taal is, moet je een Dockerfile gebruiken. Wanneer je je applicatie toevoegt, kun je de optie Dockerfile gebruiken om container image in te stellen selecteren.

Nixpacks configureren

Sommige applicaties vereisen geen configuratie, maar sommige vereisen gespecialiseerde commando’s en opties om te draaien, zoals:

Omgevingsvariabelen – Het kan zijn dat je bepaalde omgevingsvariabelen moet instellen om je applicatie te kunnen draaien.

Processen – Kinsta kan automatisch het commando voor je webproces detecteren. Je kunt dit indien nodig wijzigen en je kunt extra processen definiëren.

Processen in een Procfile – Je kunt je processen definiëren in een Procfile binnen de code van je applicatie.

Nixpacks binaire directories

Met Nixpacks kunnen de binaire directories verschillen van de standaard binaire directories voor de applicatietaal. De volgende tabel toont de binaire directories die worden gebruikt voor enkele van de meest voorkomende talen:

TaalDirectory
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
ScalaScala heeft geen specifiek standaard binair pad zoals sommige andere gecompileerde talen. Wanneer je een Scala programma compileert, genereert het bytecode die draait op de Java Virtual Machine (JVM).

De gecompileerde Scala klassen worden meestal opgeslagen in een mappenstructuur die de pakketstructuur van je code weerspiegelt. Dit is vergelijkbaar met hoe Java klassen zijn georganiseerd. Standaard, wanneer je een Scala bronbestand compileert, worden de gecompileerde .class bestanden in dezelfde directory geplaatst als de sourcecode (binnen een subdirectory structuur gebaseerd op de package declaraties).

Indien nodig kun je de runtime tools van Scala installeren met een Dockerfile in plaats van met een Nixpack.

PHP/nix/var/nix/profiles/default/bin/php
GoGo heeft geen specifiek standaard binair pad zoals sommige andere gecompileerde talen. Wanneer je een Go programma compileert, wordt het resulterende binaire uitvoerbare bestand standaard in dezelfde map geplaatst als je sourcecode.

Indien nodig kun je de runtime tools van Go installeren met een Dockerfile in plaats van met een Nixpack.

De taalversie van een Nixpack instellen

Als je de optie Nixpacks gebruiken om container image op te zetten selecteert, en als je geen versie opgeeft in de code van je applicatie, zal de Nixpack de laatst beschikbare versie gebruiken. Als je een andere taalversie wilt gebruiken voor uw toepassing, moet u de versie instellen in de bestanden van je applicatieof, afhankelijk van de taal, met een omgevingsvariabele.

De beschikbare methoden om de versie in te stellen verschillen per taal. Hieronder hebben we voorbeelden opgenomen voor de meest voorkomende talen.

Go

Om je Go versie op te geven, neem je het volgende op in het bestand go.mod van je applicatie:

go 1.18

Java

Om je Java versie op te geven, stel je de NIXPACKS_JDK_VERSION omgevingsvariabele in en zorg je ervoor dat de variabele beschikbaar is tijdens het bouwproces.

Als je Gradle gebruikt, kun je de versie opgeven door de omgevingsvariabele NIXPACKS_GRADLE_VERSION in te stellen en ervoor te zorgen dat de variabele beschikbaar is tijdens het bouwproces.

Node.js

Om je Node.js versie op te geven, doe je een van de volgende dingen:

Neem het volgende op in het package.json bestand van je applicatie:

"engines": {
"node": "18"
}

Stel de NIXPACKS_NODE_VERSION omgevingsvariabele in en zorg ervoor dat de variabele beschikbaar is tijdens het bouwproces.

PHP

Om je PHP versie op te geven moet je het volgende opnemen in het composer.json bestand van je applicatie:

{
  "require": {
    "php": "8.2"
  }
}

Python

Om je Python versie op te geven, doe je een van de volgende dingen:

  • Neem het volgende op in het bestand runtime.txt van je applicatie:
    python-3.10.6
  • Neem het volgende op in een .python versiebestand in je archief:
    3.10.6
  • Stel de NIXPACKS_PYTHON_VERSION omgevingsvariabele in en zorg ervoor dat de variabele beschikbaar is tijdens het bouwproces.

Scala

Neem het volgende op in het bestand build.sbt van je applicatie om je Scala versie op te geven:

scalaVersion := "3.2.2"
Was dit artikel nuttig?