services: postgres: image: postgres:15-alpine environment: POSTGRES_DB: trackeep POSTGRES_USER: trackeep POSTGRES_PASSWORD: trackeep123 ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U trackeep -d trackeep"] interval: 10s timeout: 5s retries: 5 start_period: 30s youtube-scraper: build: context: ./backend dockerfile: Dockerfile.youtube-scraper ports: - "7857:7857" restart: unless-stopped healthcheck: test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:7857/ || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 20s youtube-search: build: context: . dockerfile: Dockerfile.youtube-search ports: - "8090:8090" restart: unless-stopped healthcheck: test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8090/youtube?q=test || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 20s trackeep-backend: build: context: ./backend dockerfile: Dockerfile ports: - "${PORT:-8080}:8080" env_file: - .env volumes: - ./data:/data - ./uploads:/app/uploads restart: unless-stopped depends_on: postgres: condition: service_healthy youtube-scraper: condition: service_healthy youtube-search: condition: service_healthy youtube-video-scraper: condition: service_healthy healthcheck: test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8080/health || wget --no-verbose --tries=1 --spider http://localhost:8080/live"] interval: 30s timeout: 10s retries: 3 start_period: 40s youtube-video-scraper: build: context: ./youtube-video-scraper dockerfile: Dockerfile ports: - "7858:7858" restart: unless-stopped healthcheck: test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:7858/health || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 20s trackeep-frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "5173:80" depends_on: trackeep-backend: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pgrep nginx > /dev/null || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 20s volumes: postgres_data: