8cf3fe98cb
Co-authored-by: Copilot <copilot@github.com>
5.3 KiB
5.3 KiB
Docker Setup voor Transit Project APIs
Dit project bevat Docker-configuratie voor alle APIs, Admin Control Center en PostgreSQL database.
Bestanden
- auth_api/Dockerfile - Image voor Authentication API (port 5000)
- employee_api/Dockerfile - Image voor Employee API (port 4000)
- transit_api/Dockerfile - Image voor Transit API (port 5001)
- admin_ui/Dockerfile - Image voor Admin Control Center (port 5174)
- docker-compose.yml - Orchestratie van alle services
- .dockerignore - Bestanden die niet in Docker images opgenomen worden
- .env.example - Template voor environment variabelen
- DEPLOYMENT.md - Gedetailleerde deployment guide
- scripts/deploy.sh - Deployment helper script
- scripts/build-and-push.sh - Build en push script voor registry
Vereisten
- Docker (>=20.10)
- Docker Compose (>=2.0)
Installatie
1. Environment variabelen configureren
cp .env.example .env
# Bewerk .env met je eigen waarden
2. Services starten
# Start alle services (APIs + Admin UI)
docker-compose up -d
# Of build en start tegelijk (als je code hebt aangepast)
docker-compose up -d --build
# Quick start met script
./scripts/deploy.sh start
3. Logs bekijken
# Alle logs
docker-compose logs -f
# Logs van specifieke service
docker-compose logs -f auth_api
docker-compose logs -f transit_api
docker-compose logs -f admin_ui
# Via script
./scripts/deploy.sh logs admin_ui
Beschikbare Services
| Service | Port | Beschrijving |
|---|---|---|
| admin_ui | 5174 | Admin Control Center (React + Nginx) |
| auth_api | 5000 | Authentication endpoints |
| employee_api | 4000 | Employee management endpoints |
| transit_api | 5001 | Transit management endpoints |
Commando's
Services beheren (Quick way)
# Via helper script
./scripts/deploy.sh start # Start alle services
./scripts/deploy.sh stop # Stop alle services
./scripts/deploy.sh restart # Herstart alle services
./scripts/deploy.sh status # Show status
./scripts/deploy.sh logs # Bekijk logs admin_ui
./scripts/deploy.sh logs transit_api # Bekijk logs specifieke service
Services beheren (Docker compose)
# Start services
docker-compose up -d
# Stop services
docker-compose down
# Herstart services
docker-compose restart
# Verwijder containers en volumes
docker-compose down -v
Individuele services
# Herstart specifieke service
docker-compose restart auth_api
docker-compose restart admin_ui
# Build specifieke image
docker-compose build auth_api
# Logs van specifieke service
docker-compose logs -f transit_api
Admin UI
# Bekijk Admin UI
http://localhost:5174
# Logs
docker-compose logs -f admin_ui
# Shell in container
docker-compose exec admin_ui sh
Troubleshooting
Port al in gebruik
# Check welke container de port gebruikt
docker ps
# Verander port in docker-compose.yml (e.g., "5000:5000" naar "5010:5000")
Database connectie fout
# Check database status
docker-compose logs db
# Herstart database
docker-compose restart db
API start probleem
# Check logs
docker-compose logs auth_api
# Controleer environment variabelen in .env
# Controleer database connection string
Admin UI niet bereikbaar
# Check Admin UI container
docker-compose logs admin_ui
# Zorg ervoor dat poort 5174 niet in gebruik is
lsof -i :5174
Admin Control Center
De Admin UI is een modern React + Vite applicatie die alle admin functies biedt.
Features
- Authenticatie: JWT-based login met dev token helper
- Stops Management: Create en beheer transit stops met geo-coördinaten
- Bus Lines: Define bus routes met start/end stops en reistijd
- Fleet Management: Monitor fleet vehicles
- Stop Linking: Assign stops aan bus lines met volgorde en ETA
Toegang
URL: http://localhost:5174
Deployment Configuratie
Environment variabelen in docker-compose.yml:
VITE_AUTH_API: URL naar auth_api (standaard: http://auth_api:5000)VITE_TRANSIT_API: URL naar transit_api (standaard: http://transit_api:5001)
Voor externe toegang, update de URLs naar je deployment domain.
Build en Deployment
# Build Admin UI image
docker-compose build admin_ui
# Push naar registry
./scripts/build-and-push.sh ghcr.io/your-org/xtransit latest
# Deploy met updated image
docker-compose up -d
Development
Wijzigingen doorgevoerd in code
# Rebuild container
docker-compose build auth_api
# Herstart service
docker-compose restart auth_api
Code reloading (hot reload)
Voor hot reload kunt u volumes toevoegen aan docker-compose.yml:
volumes:
- ./auth_api:/app
Dit kan performance beïnvloeden. Alleen gebruiken tijdens development.
Productie Tips
- Veiligheid: Wijzig alle wachtwoorden en JWT_SECRET in .env
- Database: Gebruik een managed database service in productie
- Logging: Configureer centralized logging (ELK stack, Splunk, etc.)
- Backups: Stel automatische backups in voor de database
- Health Checks: Monitoreer de health endpoints van de APIs
- SSL/TLS: Gebruik reverse proxy (nginx) voor HTTPS
Netwerking
De services kunnen elkaar bereiken via:
- auth_api:
http://auth_api:5000 - employee_api:
http://employee_api:4000 - transit_api:
http://transit_api:5001 - database:
db:5432