105 lines
2.8 KiB
YAML
105 lines
2.8 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
# PostgreSQL Database
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
container_name: hotel_pi_db
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER:-directus}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-directus123}
|
|
POSTGRES_DB: ${POSTGRES_DB:-directus}
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
ports:
|
|
- '5432:5432'
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER:-directus}']
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: unless-stopped
|
|
networks:
|
|
- hotel_pi_network
|
|
|
|
# Directus CMS
|
|
directus:
|
|
image: directus/directus:latest
|
|
container_name: hotel_pi_cms
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
DB_CLIENT: postgres
|
|
DB_HOST: postgres
|
|
DB_PORT: 5432
|
|
DB_DATABASE: ${POSTGRES_DB:-directus}
|
|
DB_USER: ${POSTGRES_USER:-directus}
|
|
DB_PASSWORD: ${POSTGRES_PASSWORD:-directus123}
|
|
SECRET: ${SECRET:-your-secret-key-change-in-production}
|
|
AUTH_SECRET: ${AUTH_SECRET:-your-auth-secret-key-change-in-production}
|
|
CORS_ORIGIN: ${CORS_ORIGIN:-http://localhost:5173,http://localhost:5000}
|
|
PUBLIC_URL: http://localhost:8055
|
|
volumes:
|
|
- directus_uploads:/directus/uploads
|
|
- ./directus/extensions:/directus/extensions
|
|
ports:
|
|
- '8055:8055'
|
|
healthcheck:
|
|
test: ['CMD', 'wget', '--quiet', '--tries=1', '--spider', 'http://localhost:8055/server/health']
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: unless-stopped
|
|
networks:
|
|
- hotel_pi_network
|
|
|
|
# Frontend (SvelteKit)
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile
|
|
container_name: hotel_pi_frontend
|
|
environment:
|
|
VITE_API_URL: ${VITE_API_URL:-http://localhost:8055}
|
|
VITE_WS_URL: ${VITE_WS_URL:-ws://localhost:3001}
|
|
VITE_WELCOME_NAME: ${WELCOME_NAME:-Guest}
|
|
VITE_IDLE_TIMEOUT: ${IDLE_TIMEOUT_MINUTES:-5}
|
|
ports:
|
|
- '5173:5173'
|
|
depends_on:
|
|
- directus
|
|
restart: unless-stopped
|
|
networks:
|
|
- hotel_pi_network
|
|
|
|
# Control Service (Node.js)
|
|
control-service:
|
|
build:
|
|
context: ./control-service
|
|
dockerfile: Dockerfile
|
|
container_name: hotel_pi_control
|
|
environment:
|
|
PORT: 3001
|
|
CEC_DEVICE: ${CEC_DEVICE:-/dev/ttyAMA0}
|
|
PLEX_LAUNCH_COMMAND: ${PLEX_LAUNCH_COMMAND:-/usr/bin/plex-htpc}
|
|
KIOSK_LAUNCH_COMMAND: ${KIOSK_LAUNCH_COMMAND:-/home/pi/scripts/launch-kiosk.sh}
|
|
ports:
|
|
- '3001:3001'
|
|
restart: unless-stopped
|
|
networks:
|
|
- hotel_pi_network
|
|
# Enable device access for Raspberry Pi (CEC)
|
|
devices:
|
|
- /dev/ttyAMA0:/dev/ttyAMA0
|
|
|
|
volumes:
|
|
postgres_data:
|
|
driver: local
|
|
directus_uploads:
|
|
driver: local
|
|
|
|
networks:
|
|
hotel_pi_network:
|
|
driver: bridge
|