3.1 KiB
Draaien op de test-server (Docker)
De stack bestaat uit drie containers:
| Container | Rol |
|---|---|
db |
PostgreSQL (data in een Docker-volume) |
backend |
Django via gunicorn |
nginx |
serveert de React-frontend en stuurt /api + /admin door naar de backend |
Je hoeft op de server niets te installeren behalve Docker zelf (met de
docker compose-plugin). Python, Node, Postgres enz. zitten in de images.
Eenmalig: server klaarzetten
-
Zorg dat Docker + Compose op de test-server staan:
docker --version docker compose version -
Haal de code op:
git clone <jouw-forgejo-url>/Roostersoftware.git cd Roostersoftware -
Maak het
.env-bestand aan vanuit het voorbeeld en vul echte waarden in:cp .env.example .env nano .envBelangrijk om aan te passen:
DJANGO_SECRET_KEY— genereer metpython3 -c "import secrets; print(secrets.token_urlsafe(50))"DJANGO_ALLOWED_HOSTS— de hostnaam/IP van de test-serverDJANGO_CSRF_TRUSTED_ORIGINS—http://<host>:8080(of je echte URL)POSTGRES_PASSWORD— een sterk wachtwoord
.envstaat in.gitignoreen komt dus niet in git — dat hoort zo.
Starten
docker compose up -d --build
Wat er dan gebeurt: Postgres start, de backend wacht tot de database er is,
voert automatisch de migraties en collectstatic uit, en gunicorn + nginx
komen op. De app is bereikbaar op:
http://<server-host>:8080
(Poort 8080 staat ingesteld in docker-compose.yml bij de nginx-service;
pas hem daar aan als die poort bezet is.)
Eerste keer: beheerder aanmaken
docker compose exec backend python manage.py createsuperuser
Daarna kun je inloggen op http://<server-host>:8080/admin/.
Updaten na nieuwe code
git pull
docker compose up -d --build
Migraties draaien automatisch mee bij het opstarten van de backend.
Handige commando's
| Doel | Commando |
|---|---|
| Logs volgen | docker compose logs -f |
| Alleen backend-logs | docker compose logs -f backend |
| Status containers | docker compose ps |
| Stoppen | docker compose down |
| Stoppen incl. database wissen | docker compose down -v (let op: gegevens weg!) |
| Migratie handmatig | docker compose exec backend python manage.py migrate |
| Django-shell | docker compose exec backend python manage.py shell |
Aandachtspunten
- HTTPS/domein: deze opzet draait op poort 8080 zonder TLS. Voor productie zet je er een reverse proxy (bv. Caddy of Traefik) vóór die HTTPS regelt, of je breidt de nginx-config uit met certificaten. De nginx-container is daar al het logische punt voor.
- Backups: de database leeft in het volume
pgdata. Maak hiervan backups, bijvoorbeeld metdocker compose exec db pg_dump -U rooster rooster > backup.sql. DJANGO_DEBUGblijft 0 op de server. Zet hem nooit op 1 in productie.- Test eerst hier, dan productie: bouw het image één keer, test op deze
server, en draai exact dezelfde code/compose op de productieserver met een
eigen
.env.