services: app: build: . image: rolehunter-app:latest env_file: .env ports: - "127.0.0.1:${APP_PORT}:3000" depends_on: db: condition: service_healthy volumes: - uploads:/app/uploads environment: DATABASE_URL: postgres://rolehunter:${DB_PASSWORD}@db:5432/rolehunter HOSTNAME: 0.0.0.0 UPLOAD_DIR: /app/uploads restart: unless-stopped healthcheck: test: ["CMD", "node", "-e", "require('http').get('http://127.0.0.1:3000/api/health',r=>process.exit(r.statusCode===200?0:1)).on('error',()=>process.exit(1))"] interval: 15s timeout: 5s retries: 10 start_period: 30s db: image: pgvector/pgvector:pg16 env_file: .env ports: - "127.0.0.1:${DB_PORT}:5432" volumes: - pgdata:/var/lib/postgresql/data environment: POSTGRES_DB: rolehunter POSTGRES_USER: rolehunter POSTGRES_PASSWORD: ${DB_PASSWORD} restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U rolehunter -d rolehunter"] interval: 5s timeout: 3s retries: 20 volumes: pgdata: {} uploads: {}