![6 Dockerfile-alternatieven (en wanneer je er geen nodig hebt) [2026]](/_next/image?url=https%3A%2F%2Fmedia.techsy.io%2Ftechsy-io%2Fhero-114-1200x630.webp&w=3840&q=75)
6 Dockerfile-alternatieven (en wanneer je er geen nodig hebt) [2026]
Als je hier belandde omdat een Dockerfile schrijven aanvoelt als nutteloos werk, goed nieuws: de meeste apps hebben er in 2026 geen nodig. Op Railway is Railpack nu de standaard bouwmethode, niet een handgeschreven node:20-slim-image. Tools als Railpack en Cloud Native Buildpacks lezen je code, detecteren de taal, en produceren de container-image voor je. De échte vraag is dus niet "hoe schrijf ik een Dockerfile?", maar "welke Dockerfile-alternatieven passen bij mijn app?". Laten we dat uitzoeken.
Kort antwoord:
- Je hoeft doorgaans geen Dockerfile met de hand te schrijven. Zero-config builders detecteren je code en bouwen de image voor je.
- Op Railway is Railpack nu de standaard (Nixpacks is in maintenance mode). Heroku Fir en Paketo gebruiken Cloud Native Buildpacks.
- Statische sites (Astro, Next export, gewone HTML) hebben vaak helemaal geen container build nodig.
Heb je eigenlijk wel een Dockerfile nodig?
Nee, je hoeft doorgaans geen Dockerfile te schrijven. Als je deployt naar een platform als Railway, Render, of Heroku, detecteert een zero-config builder (Railpack, Nixpacks, of Cloud Native Buildpacks) je taal en bouwt de image voor je. Schrijf een Dockerfile alleen als je nauwkeurige controle nodig hebt.
Dat is het inzicht dat de meeste gidsen missen. Een Dockerfile is een tekstbestand vol instructies (FROM, COPY, RUN) dat Docker precies vertelt hoe je image laag voor laag in elkaar moet worden gezet. Krachtig, maar je schrijft en onderhoudt elke regel zelf. Zero-config builders draaien dat om: ze lezen je package.json of requirements.txt, raden de juiste base image en commando's, en bouwen zonder dat je iets hoeft te schrijven.
De buildpacks vs Dockerfile-keuze draait dus eigenlijk neer op controle versus gemak. Google Cloud's eigen vergelijking van containerisatiemethodes komt tot dezelfde conclusie: buildpacks voor snelheid en consistentie, Dockerfiles als je de regels moet buigen.
Je wilt nog steeds een echte Dockerfile als je een aangepaste base image nodig hebt, specifieke systeempakketten (denk aan ffmpeg of een obscure C-bibliotheek), of precieze multi-stage controle om megabytes weg te snijden. Al het andere? Een builder kan dat waarschijnlijk aan. Platforms als Modal gaan nog verder en bouwen images vanuit je code zonder Dockerfile.
De Dockerfile is niet langer de standaard manier om een container te bouwen. Het is de vluchtroute voor als zero-config niet volstaat.
De 6 Dockerfile-alternatieven in één oogopslag
Hier staan alle methodes naast elkaar, zodat je kunt scannen voor je gaat lezen. (Ja, "een Dockerfile schrijven" staat er ook op. Het blijft een van je opties, alleen niet de enige.)
| Methode | Configuratie-inspanning | Image-grootte | Bouwsnelheid | Controle | Het beste voor |
|---|---|---|---|---|---|
| Dockerfile | Hoog | Kleinst indien geoptimaliseerd | Snel met caching | Volledig | Aangepaste / complexe apps |
| Railpack | Nul | Klein (~38% kleiner Node vs Nixpacks) | Snel (BuildKit) | Gemiddeld (railpack.json) | Railway / moderne zero-config |
| Nixpacks | Nul | Groot (Nix store-laag) | Gemiddeld | Laag–gemiddeld | Legacy Railway / brede taaldetectie |
| Heroku / CNB Buildpacks | Nul | Gemiddeld | Gemiddeld | Laag | Heroku Fir / gestandaardiseerde org-builds |
| Paketo Buildpacks | Laag | Gemiddeld | Gemiddeld | Gemiddeld | CNB op K8s / Tekton / elk platform |
| Statisch (geen build) | Geen | n.v.t. (geen container) | Direct | n.v.t. | SSG's, statische export, gewone HTML |
Nu de zes in detail. Elk krijgt een simpele "wat is het" en een duidelijke "kies dit als".
1. Dockerfile (volledige handmatige controle)
De Dockerfile is de originele baseline waarbij jij elke instructie schrijft. Het is een script dat zegt: begin met deze base image, kopieer deze bestanden, voer deze commando's uit, stel deze poort beschikbaar. Niets wordt voor je gedetecteerd — en dat is precies het punt.
Omdat je elke laag beheert, kan een geoptimaliseerde Dockerfile de kleinste image van alle methodes hier produceren. Een multi-stage build (compileren in een zware builder-stage, alleen de output kopiëren naar een kleine eindstage) is hoe teams een Node-image terugbrengen tot onder de 120 MB. Layer caching houdt rebuilds snel zodra de eerste build klaar is.
De prijs is onderhoud. Jij bent verantwoordelijk voor de base image-updates, de beveiligingspatches, en elke eigenaardige randgeval. Voor een vijf-regels Express-app is dat overkill. Voor een app die een specifiek OS-pakket of een vastgezette compiler nodig heeft, is het de enige eerlijke optie.
Kies dit als je een aangepaste base image, specifieke systeemafhankelijkheden, of precieze multi-stage controle over je uiteindelijke image-grootte nodig hebt.
2. Railpack: Railway's zero-config standaard
Railpack is Railway's open-source (MIT) build tool, en volgens Railway's documentatie is het nu de standaard: "Railway uses Railpack to build and deploy your code with zero configuration." Het is gebouwd op BuildKit (Docker's moderne build-engine) en gebruikt Mise om taalversies vast te pinnen. Railway kondigde het in maart 2025 aan als opvolger van Nixpacks, en de Railpack-repo toont actieve releases tot en met 2026. Dit is geen beta-zijproject.
Waarom het ertoe doet: Railway zegt dat Railpack base images produceert die ruwweg 38% kleiner zijn voor Node en 77% kleiner voor Python dan Nixpacks, dankzij betere BuildKit-laagopsplitsing. Lees de volledige Nixpacks vs Docker-vergelijking als je de diepere uitleg wilt; we houden de technische details daar zodat dit een overzicht blijft.
Kleinere images zijn niet alleen netjes. Ze worden sneller gepullt, starten sneller koud op, en kosten minder om op te slaan en te verplaatsen — dat telt als je cloudkosten wilt beheersen. Je kunt volledig zero-config blijven, of een railpack.json toevoegen om versies en commando's te overschrijven als dat nodig is.
railpack buildKies dit als je deployt op Railway, of je de kleinste zero-config image wilt met BuildKit-caching ingebouwd.
3. Nixpacks: de oudere zero-config builder
Nixpacks was Railway's vorige standaard, en het is nog steeds een capabele zero-config builder met brede taal-autodetectie (Node, Python, Go, PHP, en meer). Als je stack iets niche gebruikt dat Railpack nog niet detecteert, herkent Nixpacks het misschien wel.
Een eerlijk voorbehoud: het is in maintenance mode. De Nixpacks-repo README zegt dit nu rechtstreeks en raadt Railpack aan als vervanging. Het is niet dood. Het werkt nog steeds en bouwt nog steeds; het krijgt alleen geen nieuwe features meer. Nixpacks-images zijn ook groot, vanwege hoe het de Nix store in de uiteindelijke image laagt. Dat is een bekende afweging, en we werken het volledige verhaal uit in onze diepgaande Nixpacks vs Docker-vergelijking in plaats van het hier opnieuw af te leiden.
Beschouw Nixpacks dus als de "werkt nog, maar hier is de opvolger"-optie. Nieuwe projecten op Railway krijgen automatisch Railpack; je zou naar Nixpacks grijpen bij een legacy-setup.
Kies dit als je een legacy Railway-configuratie hebt, of je een taal nodig hebt die Railpack nog niet automatisch detecteert.
4. Heroku & Cloud Native Buildpacks
Heroku's nieuwere Fir-generatie bouwt je app met Cloud Native Buildpacks (CNB), een open standaard om broncode om te zetten in OCI-container-images zonder Dockerfile. Volgens het Heroku Dev Center gebruikt Fir de heroku/builder:24-builder. Klassieke buildpacks worden niet ondersteund op Fir, dus je herdeployt een Cedar-app naar Fir in plaats van hem ter plekke te migreren.
Het fijne eraan: CNB's werken overal, niet alleen op Heroku's servers. De pack CLI van buildpacks.io laat je lokaal exact dezelfde image bouwen die Heroku in de cloud zou bouwen. Buildpacks hebben sterke caching en zijn samen te stellen, zodat een beveiligingspatch op een basislaag over elke app kan worden uitgerold zonder individuele repo's aan te raken.
pack build myapp --builder heroku/builder:24Die reproduceerbaarheid is de echte troef voor teams. Geen Dockerfiles per repo die gesynchroniseerd moeten worden, geen drift tussen ontwikkelaars.
Kies dit als je op Heroku Fir zit, of je gestandaardiseerde, reproduceerbare builds wilt over een org heen zonder een Dockerfile per project te onderhouden.
5. Paketo Buildpacks
Paketo Buildpacks is een andere Cloud Native Buildpacks-implementatie, en het is een CNCF Incubating-project (via de CNCF Buildpacks-pagina). Omdat het de CNB-specificatie volgt, draait dezelfde Paketo-build op elk platform dat buildpacks ondersteunt: Cloud Foundry, Kubernetes, Tekton-pipelines, of je eigen laptop via pack.
Zie Paketo als de platform-agnostische neef van Heroku's buildpacks. Je krijgt dezelfde "detecteer de taal, bouw de image, geen Dockerfile"-ervaring, maar je bent niet aan één host gebonden. Die portabiliteit is waarom het opduikt in Kubernetes- en CI/CD-setups waar teams consistente builds willen over veel services.
Het zit een stapje hoger op de controleschaal dan Heroku's CNB's, omdat je buildpacks kunt combineren en de builder kunt instellen.
Kies dit als je Cloud Native Buildpacks wilt maar niet op Heroku zit — denk aan Kubernetes, Tekton, of een platform-agnostische build-pipeline.
6. Statisch (helemaal geen build)
Soms is het beste Dockerfile-alternatief helemaal niets bouwen. Als je app compileert naar statische bestanden — een statische site generator als Astro, een Next.js statische export, of gewone HTML, CSS en JS — heb je doorgaans helemaal geen container-image nodig.
Statische hosts als Netlify, Cloudflare Pages, GitHub Pages, en Vercel's statische tier nemen je gebouwde bestanden en serveren ze direct vanuit een CDN. Geen server-runtime, geen poort om beschikbaar te stellen, geen image om te shippen. Je pusht, zij deployen. Het is het snelste en goedkoopste pad dat bestaat, en het is onzichtbaar op de meeste "Docker-alternatieven"-lijsten omdat het containers volledig omzeilt.
De beperking is duidelijk: dit werkt alleen als er geen server-side runtime is. Op het moment dat je een API, een databaseverbinding, of server-side rendering per request nodig hebt, ben je terug bij een van de builder-opties hierboven.
Als je app compileert naar statische bestanden, is de snelste container build de build die je overslaat.
Kies dit als je output puur statische bestanden zijn zonder server-runtime om te draaien.
Hoe kies je? Een eenvoudige beslisboom
Kiezen komt neer op vier snelle vragen over je output, je behoefte aan controle, en je platform. Statische output slaat containers over; fijnmazige controle nodig betekent een Dockerfile; anders kiest je platform de builder. Volg de stappen hieronder.
- Lever je een statische site of SSG-output (HTML, Astro, Next export)? → Statische hosting, geen container build nodig.
- Heb je fijnmazige controle nodig (aangepaste base image, systeemdependenties, multi-stage)? → Dockerfile.
- Zit je op Railway? → Railpack (de standaard; Nixpacks alleen voor legacy-projecten).
- Zit je op Heroku Fir? → Heroku CNB Buildpacks via
heroku/builder:24. - Ergens anders, op Kubernetes, of wil je portable CNB? → Paketo Buildpacks (of de
packCLI).
Platform nog niet gekozen? Die beslissing bepaalt welke builder je standaard erft, dus begin daar. Onze Railway vs Render vs Fly.io-vergelijking werkt de vraag "waar deploy ik" door voordat je ooit over bouwmethodes nadenkt.
Onze aanpak: wat wij zelf gebruiken
We bouwden dezelfde kleine Express "hello world"-app op drie manieren en maten elk resultaat. De app was elke keer identiek: één index.js, één dependency (Express), geen trucjes. We draaiden het op een Apple Silicon Mac met Docker 29.4, Nixpacks 1.41, en Railpack 0.23, en bouwden elke image vanaf nul zonder cache. Dit is wat eruit kwam:
| Builder | Uiteindelijke image-grootte | Bouwtijd |
|---|---|---|
Dockerfile (multi-stage, node:20-slim) | 255 MB | ~7s |
| Railpack (Node, zero config) | 416 MB | ~32s |
| Nixpacks (Node, zero config) | 689 MB | ~30s |
Een paar eerlijke opmerkingen. De handgeschreven Dockerfile won op grootte, zoals verwacht, maar we schreven en stelden een multi-stage build af om daar te komen. De image van Railpack kwam ruwweg 40% kleiner uit dan die van Nixpacks (416 MB vs 689 MB) voor exact dezelfde app en nul configuratie van onze kant — dat is precies de reden waarom Railway zijn standaard heeft gewisseld. Nixpacks was verreweg het zwaarst, en je ziet waarom in onze Nixpacks vs Docker-diepteanalyse. Behandel de bouwtijden als ruwe schattingen: het zijn losse runs en ze variëren met caching en netwerk, dus image-grootte is het getal waarop we hier daadwerkelijk vertrouwen.
Wat gebruiken we dan zelf? Voor de meeste PaaS-deploys: Railpack. Het is zero-config, het is de kleinste zero-config image die we getest hebben, en het is Railway's standaard toch al. We schrijven alleen een Dockerfile als we echt een aangepaste base image of een systeemdependency nodig hebben die een builder niet toevoegt. Voor statische output slaan we de container volledig over.
Bij Techsy maken we dit soort build-en-deploy-beslissingen elke week voor klantapps, waarbij we het deployment-platform en de bouwmethode kiezen die images klein houden en het shippen snel. Als je niet weet welk pad bij jouw stack past, vraag een gratis adviesgesprek aan en we praten het door.
Over de auteur
Mert Batur is mede-oprichter van Techsy.io, waar het team AI-agents, automatiseringssystemen en voice/SDR-pipelines bouwt voor B2B-klanten. Hij schrijft over de LLM-tooling-stack die het Techsy-team daadwerkelijk in productie gebruikt. Verbind op LinkedIn.
Mert Batur — Mede-oprichter, Techsy.io
Veelgestelde vragen
Heb ik een Dockerfile nodig?
Meestal niet. Als je deployt naar Railway, Render, of Heroku, detecteert een zero-config builder als Railpack, Nixpacks, of Cloud Native Buildpacks je taal en bouwt de container-image voor je. Schrijf een Dockerfile alleen als je een aangepaste base image, specifieke systeempakketten, of fijnmazige multi-stage controle over de eindimage nodig hebt.
Wat is het verschil tussen Buildpacks en een Dockerfile?
Een Dockerfile is een handmatig script waarbij je elke buildinstructie zelf schrijft. Buildpacks detecteren automatisch je taal en framework, en bouwen de image met één commando (pack build) zonder Dockerfile. Buildpacks leveren wat controle en image-grootte in voor consistentie en nul onderhoud — dat is de kern van de buildpacks vs Dockerfile-keuze.
Is Railpack beter dan Nixpacks?
Voor de meeste nieuwe Railway-apps: ja. Railpack is Railway's huidige standaard, gebouwd op BuildKit, en het produceert merkbaar kleinere images (Railway noemt ruwweg 38% kleiner voor Node). Nixpacks werkt nog steeds en detecteert een breed scala aan talen, maar het is in maintenance mode — Railpack is het aanbevolen pad vooruit.
Is Nixpacks dood?
Nee. Nixpacks is in maintenance mode, niet verlaten. De eigen GitHub README zegt dat het niet meer actief in ontwikkeling is en raadt Railpack aan als vervanging. Bestaande apps bouwen prima, en de taaldetectie is breed, maar nieuwe features komen er niet meer aan — daarom zet Railway nieuwe projecten nu standaard op Railpack.
Kan ik deployen zonder enige bouwstap?
Ja, als je app statisch is. Statische site generators (Astro, Next statische export) en gewone HTML-output deployen direct naar statische hosts als Netlify, Cloudflare Pages, of GitHub Pages zonder enige container build. Dit werkt alleen als er geen server-runtime is. Op het moment dat je een API of server-side rendering nodig hebt, heb je een builder nodig.
Wat is de pack CLI?
De pack CLI is de officiële command-line tool van buildpacks.io voor het lokaal bouwen van images met Cloud Native Buildpacks. Je draait pack build myapp --builder heroku/builder:24 en het produceert dezelfde OCI-image die een platform als Heroku in de cloud zou bouwen — dat maakt lokaal testen en reproduceerbare builds eenvoudig.
Zijn Buildpacks langzamer dan Dockerfiles?
Vaak iets, bij een koude eerste build, omdat buildpacks lagen automatisch detecteren en samenstellen. Maar hun per-buildpack layer caching maakt rebuilds snel, en een goed gecachte buildpack-build kan een geoptimaliseerde Dockerfile evenaren. De grotere afweging is image-grootte en controle, niet pure snelheid voor de meeste alledaagse apps.
Wat dacht je van Podman — is dat een Dockerfile-alternatief?
Niet echt. Podman vervangt de Docker-engine (de runtime die containers bouwt en draait), niet de Dockerfile zelf; het leest nog steeds dezelfde Dockerfile-syntax. Als je het schrijven van een Dockerfile wilt overslaan, wil je een zero-config builder als Railpack of Buildpacks. Podman is een alternatief voor Docker-als-runtime — een totaal andere vraag.
Welk Dockerfile-alternatief maakt de kleinste image?
Een handgeoptimaliseerde multi-stage Dockerfile kan de kleinste image van alle opties produceren (255 MB in onze test). Onder de zero-config builders wint Railpack (416 MB voor een Node-app tegenover 689 MB voor Nixpacks, zelfde app). Statische hosting heeft helemaal geen image nodig, dus als je output statisch is, is dat verreweg de kleinste footprint.