version: '3.8' services: vitalit-app: build: . ports: - "8000:8000" - "3000:3000" environment: - DATABASE_URL=sqlite:///./hospital.db - SECRET_KEY=${SECRET_KEY:-your-secret-key-change-in-production} - LOG_LEVEL=INFO volumes: - ./data:/app/data - ./logs:/app/logs - ./backups:/app/backups - ./uploads:/app/uploads restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # Optional: PostgreSQL for production postgres: image: postgres:15-alpine environment: - POSTGRES_DB=vitalit - POSTGRES_USER=vitalit - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-vitalit_password} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" restart: unless-stopped profiles: - production # Optional: Redis for caching redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data restart: unless-stopped profiles: - production # Optional: Nginx reverse proxy nginx: image: nginx:alpine ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./ssl:/etc/nginx/ssl depends_on: - vitalit-app restart: unless-stopped profiles: - production volumes: postgres_data: redis_data: networks: default: name: vitalit-network