name: jobs-startup services: # PostgreSQL Database postgres: image: postgres:15-alpine container_name: postgres environment: POSTGRES_DB: job_parser POSTGRES_USER: postgres POSTGRES_PASSWORD: password ports: - "5433:5432" volumes: - postgres_data:/var/lib/postgresql/data networks: - jobs_network restart: unless-stopped user: postgres healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 # Redis redis: image: redis:7-alpine container_name: redis volumes: - redis_data:/data networks: - jobs_network restart: unless-stopped command: redis-server # AI Service ai-service: build: ./ai-service image: ai-service:latest container_name: ai-service env_file: - ./ai-service/.env ports: - "8001:8001" networks: - jobs_network restart: unless-stopped depends_on: - redis command: python -m uvicorn app.main:app --host 0.0.0.0 --port 8001 # Parser Service parser: build: ./parser image: parser:latest container_name: parser env_file: - ./parser/.env.production ports: - "3000:3000" networks: - jobs_network restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_started command: npm run start:prod # Client client: build: ./client image: client:latest container_name: client ports: - "5173:80" networks: - jobs_network restart: unless-stopped depends_on: - parser volumes: postgres_data: redis_data: networks: jobs_network: driver: bridge