Files
crawlapi/docker-compose.yml
Developer 62994d4f3d
Some checks failed
CI / Test (push) Has been cancelled
Deploy / Deploy to Staging (push) Has been cancelled
CI / Build & Push (push) Has been cancelled
Deploy / Deploy to Production (push) Has been cancelled
Initial commit: Full Crawl API implementation
2026-04-29 07:03:48 +00:00

142 lines
3.3 KiB
YAML

version: "3.8"
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: crawlapi
POSTGRES_PASSWORD: crawlapi
POSTGRES_DB: crawlapi
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U crawlapi"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
minio:
image: minio/minio:latest
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_data:/data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 10s
timeout: 5s
retries: 5
api:
build:
context: .
dockerfile: Dockerfile.api
ports:
- "3000:3000"
environment:
DATABASE_URL: postgres://crawlapi:crawlapi@postgres:5432/crawlapi
REDIS_URL: redis://redis:6379
JWT_SECRET: your-super-secret-jwt-key-change-this-in-production
S3_ENDPOINT: http://minio:9000
S3_BUCKET: crawlapi
S3_REGION: us-east-1
S3_ACCESS_KEY: minioadmin
S3_SECRET_KEY: minioadmin
APP_PORT: 3000
APP_HOST: 0.0.0.0
PLAYWRIGHT_SCRIPT_PATH: /app/playwright/pool.js
AWS_ACCESS_KEY_ID: minioadmin
AWS_SECRET_ACCESS_KEY: minioadmin
BROWSER_POOL_SIZE: "5"
MAX_PAGES_PER_BROWSER: "10"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
minio:
condition: service_healthy
volumes:
- ./playwright:/app/playwright:ro
worker:
build:
context: .
dockerfile: Dockerfile.worker
environment:
DATABASE_URL: postgres://crawlapi:crawlapi@postgres:5432/crawlapi
REDIS_URL: redis://redis:6379
S3_ENDPOINT: http://minio:9000
S3_BUCKET: crawlapi
S3_REGION: us-east-1
S3_ACCESS_KEY: minioadmin
S3_SECRET_KEY: minioadmin
AWS_ACCESS_KEY_ID: minioadmin
AWS_SECRET_ACCESS_KEY: minioadmin
PLAYWRIGHT_SCRIPT_PATH: /app/playwright/pool.js
BROWSER_POOL_SIZE: "5"
MAX_PAGES_PER_BROWSER: "10"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
minio:
condition: service_healthy
volumes:
- ./playwright:/app/playwright:ro
deploy:
replicas: 3
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
command:
- '--config.file=/etc/prometheus/prometheus.yml'
grafana:
image: grafana/grafana:latest
ports:
- "3001:3000"
environment:
GF_SECURITY_ADMIN_PASSWORD: admin
volumes:
- grafana_data:/var/lib/grafana
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
ports:
- "80:80"
depends_on:
- api
volumes:
postgres_data:
redis_data:
minio_data:
grafana_data: