Build, env vars & commando's
Wanneer je een Next.js- of Go-app deployt, wordt je code eerst gebouwd in een container. Deze gids legt uit wat er tijdens een build gebeurt, hoe je npm run build stuurt met pre- en post-build commando's, en hoe je omgevingsvariabelen goed gebruikt.
Het buildproces, stap voor stap
Bij een deploy van een Next.js- of Go-app gebeurt dit, in deze volgorde:
| Stap | Wat er gebeurt |
|---|---|
| 1. Ophalen | De branch wordt van GitHub gekloond. |
| 2. Hoofdmap | Er wordt naar je hoofdmap gegaan (zie hieronder). |
| 3. Installeren | Dependencies installeren (npm install / Go-modules). |
| 4. Pre-build | Je pre-build commando draait (optioneel). |
| 5. Bouwen | De build zelf — npm run build (Next.js) of compileren (Go). |
| 6. Starten | De container start; je server gaat draaien. |
| 7. Post-build | Je post-build commando draait in de draaiende container (optioneel). |
Je vindt en wijzigt deze instellingen op de detailpagina van je app, onder Project Informatie → Build instellingen. Ze staan ook in de laatste stap van de aanmaak-wizard.
Hoofdmap (root directory)
Staat je project in een submap van je repository (bijvoorbeeld een monorepo met een map app/, client/ of frontend/)? Vul dan die submap in als hoofdmap. EduInsights gebruikt die map als startpunt voor het installeren en bouwen.
textmijn-repo/ ├─ app/ ← hoofdmap = "app" │ ├─ package.json │ └─ ... └─ README.md
Laat de hoofdmap leeg als je package.json (of go.mod) in de root van de repo staat.
Pre-build commando
Draait na het installeren, vóór de build (stap 4). Gebruik dit voor code die je build nodig heeft, zoals het genereren van een Prisma-client:
bashnpx prisma generate
Post-build commando
Draait nadat de build klaar is, in de draaiende container (stap 7). De container heeft op dat moment toegang tot je gekoppelde database, dus dit is dé plek voor migraties of seeding:
bash# Tabellen aanmaken/bijwerken op basis van je Prisma-migraties npx prisma migrate deploy
bash# Of: schema direct pushen én testdata inladen npx prisma db push && npx prisma db seed
Omgevingsvariabelen
Onder het tabblad Env (of Omgevingsvariabelen) van je app stel je sleutel/waarde-paren in. Die zijn beschikbaar tijdens de build én als je app draait. Lees ze uit in je code:
ts// Next.js (server component / route handler / server action) const apiKey = process.env.MIJN_API_KEY;
php// PHP $apiKey = getenv('MIJN_API_KEY');
pythonimport os api_key = os.environ["MIJN_API_KEY"]
DB_* komt automatisch
Koppel je een database aan je app, dan worden deze variabelen automatisch ingespoten — je hoeft ze niet zelf toe te voegen:
| Variabele | Betekenis |
|---|---|
DB_HOST | Hostnaam binnen het platform (mysql) |
DB_PORT | Poort (3306) |
DB_NAME | Naam van je database |
DB_USER | Gebruikersnaam |
DB_PASS | Wachtwoord |
Meer hierover in Verbindingsgegevens.
Een eigen Dockerfile (gevorderd)
Heb je speciale wensen voor je build? Vul dan een Dockerfile pad in (bijv. Dockerfile of docker/Dockerfile.prod). Laat het veld leeg om de standaard-build te gebruiken — voor de meeste projecten is dat precies goed.
Debug je build lokaal (vóór je deployt)
De snelste manier om een mislukte deploy te voorkomen: draai dezelfde build eerst op je eigen computer. Slaagt hij lokaal, dan slaagt hij bijna altijd ook op EduInsights. Per taal:
bashnpm ci # schone install, net als op de server npx prisma generate # alleen als je Prisma gebruikt (je pre-build commando) npm run build # hier komen build-fouten naar boven
Krijg je hier een fout, dan faalt de deploy ook. Los hem lokaal op en push daarna pas.
bashgo build ./... # compileert alles; faalt bij type- en syntaxfouten go vet ./... # vindt veelgemaakte fouten
bashphp -l index.php # controleert één bestand op syntaxfouten php -S localhost:8000 # draai je site lokaal en test hem
Logs lezen
Gaat er iets mis, dan zijn de logs je beste vriend. Je vindt ze op de detailpagina van je app:
- Deployments — elke build/deploy heeft hier zijn eigen logboek, met status en tijdstip. Klik een deploy open om de build-uitvoer te zien (
git clone, installeren, pre-build, de build zelf en post-build). Hier zie je waarom een build mislukt. - Logs — console-uitvoer van je draaiende server (jouw
console.log, errors, enz.).
Veelvoorkomende fouten
| Symptoom | Oorzaak & oplossing |
|---|---|
| Build faalt op een ontbrekende Prisma-client | Zet npx prisma generate als pre-build commando. |
package.json (of go.mod) niet gevonden | Controleer je hoofdmap — staat je project in een submap? |
| Databaseverbinding mislukt | Koppel een database aan je app en controleer dat de DB_* variabelen aanwezig zijn (tabblad Env). |
| Werkt lokaal, maar niet live | Lees waarden via process.env / getenv() in plaats van uit een lokale .env. Pas je een variabele aan? Deploy daarna opnieuw. |
Volgende stappen
- Terug naar het overzicht: Je project online zetten
- Volledige Next.js-setup met Prisma: Next.js + MySQL + Prisma
Meer in Aan de slag