Handleiding
Docker Setup â Coin-Trader
Installatie, beheer en verbindingen voor de Docker containeromgeving.
Overzicht
De coin-trader applicatie draait in drie Docker containers die via een intern netwerk (coin-network) met elkaar communiceren.
Backend
coin-trader-server-1
â Up
Host: :3015 â container :3005
IP: 172.18.0.2
Frontend
coin-trader-client-1
â Up
Host: :8080 â container :80
IP: 172.18.0.3
Database
coin-trader-db-1
â Up
Host: :3307 â container :3306
IP: 172.18.0.4
Poort 3306 en 3005 zijn al in gebruik door de host (PM2 / host MariaDB), vandaar de alternatieve host poorten 3307 en 3015.
Benodigde bestanden
/var/www/html/coin-trader/
âââ docker-compose.yml # Koppelt alle 3 services samen
âââ .env # DB credentials voor variabele-expansie
âââ server/
â âââ Dockerfile # Node.js backend container
â âââ .env # Server configuratie (API keys, DB, mail)
âââ client/
âââ Dockerfile # Apache frontend (multi-stage Vite build)
âââ docker-compose.yml # Koppelt alle 3 services samen
âââ .env # DB credentials voor variabele-expansie
âââ server/
â âââ Dockerfile # Node.js backend container
â âââ .env # Server configuratie (API keys, DB, mail)
âââ client/
âââ Dockerfile # Apache frontend (multi-stage Vite build)
Installatie
Stap 1 â Docker installeren (eenmalig)
bash
echo '<sudo-wachtwoord>' | sudo -S apt-get update echo '<sudo-wachtwoord>' | sudo -S apt-get install -y docker.io docker-compose docker-compose-v2
Stap 2 â Containers bouwen en starten
Gebruik docker compose (v2, zonder koppelteken), niet het oudere
docker-compose. De v1 variant is niet compatibel met Docker Engine 28+.
bash
cd /var/www/html/coin-trader sudo docker compose up -d --build
Stap 3 â Status controleren
bash
sudo docker compose ps
Containers beheren
bash
# Status overzicht sudo docker compose ps # Logs bekijken sudo docker compose logs server --tail=50 sudo docker compose logs db --tail=30 # Alle containers stoppen sudo docker compose down # EÊn container herstarten sudo docker compose restart server # Shell openen in een container sudo docker exec -it coin-trader-server-1 sh sudo docker exec -it coin-trader-db-1 bash
Verbindingen
A â Vanuit de terminal / Antigravity
Containers zijn bereikbaar via localhost + host poort:
bash
# API aanroepen curl http://localhost:3015/api/status # MariaDB verbinding mysql -h 127.0.0.1 -P 3307 -u cointrader_user -p cointrader_live
B â Vanuit een HTML / JavaScript frontend
javascript
// API base URL â gebruik het publieke IP of domein van de server const API_BASE = 'http://<server-ip>:3015'; // Voorbeeld fetch fetch(`${API_BASE}/api/portfolio`) .then(res => res.json()) .then(data => console.log(data));
Zorg dat CORS geconfigureerd is in
index_live.js voor het frontend-origin (bijv. http://<ip>:8080).
C â Van container naar container (intern)
Containers communiceren via de servicenaam als hostname â niet via IP-adres:
| Van | Naar server | Naar database |
|---|---|---|
client container |
http://server:3005 |
â |
server container |
â | db:3306 |
Vandaar dat in
docker-compose.yml staat: DB_HOST=db â de servicenaam, niet 127.0.0.1.
D â IP-adressen
| Container | Intern Docker IP | Host poort | Bereikbaar via |
|---|---|---|---|
coin-trader-server-1 |
172.18.0.2 | :3015 | localhost:3015 |
coin-trader-client-1 |
172.18.0.3 | :8080 | localhost:8080 |
coin-trader-db-1 |
172.18.0.4 | :3307 | localhost:3307 |
Interne IP-adressen (
172.18.x.x) kunnen wijzigen na docker compose down/up. Gebruik altijd de servicenaam voor container-tot-container communicatie en host poorten voor externe toegang.
Meerdere omgevingen (Test & Productie)
Gebruik override-bestanden per omgeving naast de basis docker-compose.yml:
docker-compose.yml # Gedeelde basis
docker-compose.prod.yml # Productie overrides (live DB, poort 80)
docker-compose.test.yml # Test overrides (test DB, andere poort)
docker-compose.prod.yml # Productie overrides (live DB, poort 80)
docker-compose.test.yml # Test overrides (test DB, andere poort)
bash
# Productieomgeving starten sudo docker compose -p coin-prod -f docker-compose.yml -f docker-compose.prod.yml up -d # Testomgeving starten sudo docker compose -p coin-test -f docker-compose.yml -f docker-compose.test.yml up -d
Zie multiple_environments_docker.md voor de volledige uitwerking van de override bestanden.
Probleemoplossing
| Fout | Oorzaak | Oplossing |
|---|---|---|
| address already in use :3306 | Host MariaDB gebruikt 3306 | Gebruik poort 3307 in docker-compose.yml |
| address already in use :3005 | PM2 gebruikt 3005 | Gebruik poort 3015 in docker-compose.yml |
| ContainerConfig KeyError | docker-compose v1.29 incompatibel met Docker 28 | Gebruik docker compose (v2, zonder koppelteken) |
| password option not specified | ${DB_PASS} leeg in compose |
Maak .env naast docker-compose.yml met DB-variabelen |
| npm ERESOLVE in client build | Peer dependency conflict @vitejs/plugin-basic-ssl | --legacy-peer-deps in client Dockerfile |