services: redis: image: docker.io/redis:7-alpine restart: unless-stopped ports: - "16379:6379" volumes: - redis_data:/data:z networks: - bornetime api: build: context: . dockerfile: Dockerfile.api restart: unless-stopped ports: - "18000:8000" volumes: - ./backend:/app:z - ./data/videos:/data/videos:z - ./data/app:/data/app:z environment: - DATABASE_URL=sqlite+aiosqlite:////data/app/bornetime.db - REDIS_URL=redis://redis:6379/0 - VIDEO_DIR=/data/videos - HF_TOKEN=${HF_TOKEN:-} depends_on: - redis networks: - bornetime worker: build: context: . dockerfile: Dockerfile.worker.gguf restart: unless-stopped volumes: - ./backend:/app:z - ./data/videos:/data/videos:z - ./data/app:/data/app:z - ./data/hf_cache:/data/hf_cache:z - ./models:/models:z environment: - DATABASE_URL=sqlite+aiosqlite:////data/app/bornetime.db - REDIS_URL=redis://redis:6379/0 - VIDEO_DIR=/data/videos - HF_TOKEN=${HF_TOKEN:-} - HUGGINGFACE_TOKEN=${HF_TOKEN:-} - TRANSLATE_MODEL_PATH=/models/translategemma-12b-q8_0.gguf - ROCR_VISIBLE_DEVICES=0,1 - PYTORCH_HIP_ALLOC_CONF=expandable_segments:True devices: - /dev/kfd:/dev/kfd:z - /dev/dri:/dev/dri:z group_add: - video depends_on: - redis networks: - bornetime frontend: image: docker.io/node:22-alpine working_dir: /app command: sh -c "npm install && npm run dev -- --host 0.0.0.0" ports: - "15173:5173" volumes: - ./frontend:/app:z depends_on: - api networks: - bornetime frontend-prod: build: context: . dockerfile: Dockerfile.frontend restart: unless-stopped ports: - "80:80" depends_on: - api profiles: - production networks: - bornetime volumes: redis_data: hf_cache: networks: bornetime: driver: bridge