Hoe Cubli je code bouwt

Railpack herkent je stack, zonder Dockerfile; wat er wordt geüpload, de poort, en wanneer een versie live gaat.

Je hoeft geen Dockerfile of buildscript te schrijven. Cubli bouwt je code met Railpack: dat kijkt naar je bestanden, herkent welke taal en welk framework je gebruikt (zoals Node, een statische site of PHP) en bouwt daar een image van. Dat geldt voor code uit de CLI, uit je AI-tool en uit GitHub.

Wat er wordt geüpload

Met cubli up (of de deploy-tool van je AI) pakt de CLI je map in:

  • Je .gitignore-bestanden tellen mee, in elke map, net zoals bij git. Een .dockerignore bovenin telt ook mee.
  • Deze gaan nooit mee, wat er ook in je ignore-bestanden staat: .git, node_modules, .env en .env.*, .cubli.json, .cubli-data, .DS_Store, en SSH-sleutels zoals id_rsa en id_ed25519.
  • Ingepakt mag het hooguit 200 MB zijn.

Geheimen zet je dus niet in je code maar in variabelen.

Bouwen

Het bouwen gebeurt op een aparte bouwserver en duurt hooguit 15 minuten. Cubli bewaart een buildcache per service, nooit gedeeld met anderen, dus een tweede build gaat meestal sneller.

  • Dockerfile: staat er een in je code, dan gebruikt Cubli hem niet. Railpack bouwt je app.
  • Node-versie: uit package.json (engines), anders de huidige LTS. Je kunt hem vastzetten bij je app onder Instellingen, Runtime, Node-versie (20, 22 of 24).
  • Variabelen tijdens het bouwen: je variabelen zijn beschikbaar bij het bouwen, maar worden niet in het image opgeslagen. Variabelen die in de browser terechtkomen, zoals VITE_* of NEXT_PUBLIC_*, worden ingebakken. Zet die dus vóór het deployen, en deploy opnieuw als je ze wijzigt.

Wil je vooraf weten wat Cubli in je map ziet? Draai npx @cubli/cli check. Dat leest je map zonder iets te uploaden en vertelt welk framework het is, wat je app gebruikt en welke variabelen je nog moet zetten.

Starten: de poort

Je app moet luisteren op de poort in de variabele PORT. Cubli zet die zelf; standaard is het 8080. Je ziet en wijzigt de poort bij je app onder Instellingen, Starten.

Een statische site, zoals een Astro-site, hoeft niets te doen: Cubli serveert de bestanden.

Wanneer een versie live gaat

Een nieuwe versie krijgt pas bezoekers als hij antwoordt. Cubli kijkt elke paar seconden of je app op zijn poort reageert. Geef je bij Gezondheidscheck een pad op, zoals /health, dan moet dat pad antwoorden.

  • Tot de nieuwe versie klaar is, blijft de vorige gewoon draaien.
  • Start de nieuwe versie niet, dan blijft de vorige online en zie je de reden in de deploy.
  • Elke versie blijft bewaard, dus terug naar een vorige kan altijd, zonder opnieuw te bouwen.

Wat Cubli aan je app geeft

  • PORT: de poort waarop je app luistert.
  • CUBLI_URL: het primaire adres van je site, zoals https://bakkerijjansen.nl.
  • Gekoppelde databases geven hun eigen variabelen, zoals DATABASE_URL. Zie Databases toevoegen en koppelen.
Was dit nuttig?

Kom je er niet uit? Mail support@cubli.io, of vraag het vanuit je dashboard: Hulp