2026-05-26 14:36:34 -04:00
|
|
|
services:
|
|
|
|
|
backend:
|
|
|
|
|
build: ./server
|
|
|
|
|
container_name: dashboard-backend
|
2026-06-02 14:26:13 -04:00
|
|
|
expose:
|
|
|
|
|
- "3001" # Remove public port, keep internal only
|
2026-05-28 12:34:01 -04:00
|
|
|
environment:
|
2026-06-01 14:24:48 -04:00
|
|
|
- HOST_BROWSE_ROOT=${HOST_BROWSE_ROOT}
|
2026-05-28 12:34:01 -04:00
|
|
|
- HOST_MOUNT_ROOT=/host
|
2026-06-03 16:15:09 -04:00
|
|
|
- DASHBOARD_DB_PATH=/app/data/dashboard.db
|
2026-05-26 14:36:34 -04:00
|
|
|
volumes:
|
2026-05-28 11:01:47 -04:00
|
|
|
- type: bind
|
|
|
|
|
source: ./server
|
|
|
|
|
target: /app
|
2026-06-03 16:15:09 -04:00
|
|
|
- db_data:/app/data
|
2026-05-28 12:34:01 -04:00
|
|
|
- type: bind
|
2026-06-01 14:24:48 -04:00
|
|
|
source: ${HOST_BROWSE_ROOT}
|
2026-05-28 12:34:01 -04:00
|
|
|
target: /host
|
2026-05-26 14:36:34 -04:00
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
frontend:
|
|
|
|
|
build: ./dashboard
|
|
|
|
|
container_name: dashboard-frontend
|
2026-06-02 14:26:13 -04:00
|
|
|
expose:
|
|
|
|
|
- "5173" # Remove public port, keep internal only
|
|
|
|
|
depends_on:
|
|
|
|
|
- backend
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
nginx:
|
|
|
|
|
image: nginx:alpine
|
|
|
|
|
container_name: dashboard-nginx
|
2026-05-26 14:36:34 -04:00
|
|
|
ports:
|
2026-06-02 14:26:13 -04:00
|
|
|
- "80:80" # Single public entry point
|
|
|
|
|
volumes:
|
|
|
|
|
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
2026-05-26 14:36:34 -04:00
|
|
|
depends_on:
|
|
|
|
|
- backend
|
2026-06-02 14:26:13 -04:00
|
|
|
- frontend
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
2026-06-03 16:15:09 -04:00
|
|
|
volumes:
|
|
|
|
|
db_data:
|
|
|
|
|
|