# Development dependencies only. # Run the Node.js app natively with `npm run dev` after starting these services. # # Usage: # docker compose -f docker-compose.deps.yml -p crm-local up -d # docker compose -f docker-compose.deps.yml -p crm-local down # # Required .env.local changes for native dev: # DATABASE_URL=postgresql://appuser:${POSTGRES_PASSWORD}@localhost:5432/appdb # MINIO_ENDPOINT=http://localhost:9000 # DOC_WORKER_URL=http://localhost:3000 services: db: # Тег запинен: pgvector 0.8.4 + PostgreSQL 16 (совпадает с локальным стендом) image: pgvector/pgvector:0.8.4-pg16 environment: POSTGRES_DB: ${POSTGRES_DB:-appdb} POSTGRES_USER: ${POSTGRES_USER:-appuser} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-appuser} -d ${POSTGRES_DB:-appdb}"] interval: 5s timeout: 5s retries: 10 start_period: 10s # Ресурсные лимиты (шаг 0.4) mem_limit: 768m cpus: 0.75 pids_limit: 128 minio: # Тег запинен: совпадает с версией на продакшене (RELEASE.2025-09-07T16-13-09Z) image: minio/minio:RELEASE.2025-09-07T16-13-09Z command: server /data --console-address :9001 ports: - "9000:9000" - "9001:9001" environment: # Креды MinIO — только из .env, дефолтов нет: в production обязательно сменить minioadmin/minioadmin MINIO_ROOT_USER: ${MINIO_ACCESS_KEY:?MINIO_ACCESS_KEY is required} MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY:?MINIO_SECRET_KEY is required} volumes: - minio_data:/data restart: unless-stopped healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 10s timeout: 5s retries: 10 start_period: 15s # Ресурсные лимиты (шаг 0.4) mem_limit: 256m cpus: 0.5 pids_limit: 64 webdav: # Тег запинен: совпадает с версией на продакшене (rclone v1.74.0) image: rclone/rclone:1.74.0 entrypoint: /bin/sh command: > -c "rclone serve webdav --addr :8080 --user $${WEBDAV_USER:-admin} --pass $${WEBDAV_PASSWORD:?WEBDAV_PASSWORD is required} --no-checksum :s3:$${MINIO_BUCKET:-files} --s3-provider=Minio --s3-access-key-id=$${MINIO_ACCESS_KEY:?MINIO_ACCESS_KEY is required} --s3-secret-access-key=$${MINIO_SECRET_KEY} --s3-endpoint=http://minio:9000 --s3-no-check-bucket" ports: - "8080:8080" environment: WEBDAV_USER: ${WEBDAV_USER:-admin} WEBDAV_PASSWORD: ${WEBDAV_PASSWORD:-} MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:?MINIO_ACCESS_KEY is required} MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-} MINIO_BUCKET: ${MINIO_BUCKET:-files} restart: unless-stopped depends_on: minio: condition: service_healthy # Ресурсные лимиты (шаг 0.4) mem_limit: 64m cpus: 0.25 pids_limit: 32 document-worker: # Option 1: use prebuilt image (requires GHCR auth, see deploy.yml) # image: ghcr.io/iisultanov/iistwin-document-worker:latest # pull_policy: if_not_present # Option 2: build locally (slower first start, no GHCR auth needed) build: context: . dockerfile: docker/Dockerfile.documents env_file: - .env.local environment: - PORT=3000 ports: - "3000:3000" volumes: - crm_data:/app/data restart: unless-stopped healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 start_period: 30s # Ресурсные лимиты (шаг 0.4) mem_limit: 1g cpus: 1.0 pids_limit: 256 ollama: # Тег запинен: совпадает с версией на продакшене (ollama 0.30.10) image: ollama/ollama:0.30.10 profiles: - with-ollama ports: - "11434:11434" volumes: - ollama_data:/root/.ollama restart: unless-stopped healthcheck: test: ["CMD-SHELL", "curl -sf http://localhost:11434/api/tags || exit 1"] interval: 10s timeout: 5s retries: 12 start_period: 30s # Ресурсные лимиты (шаг 0.4) mem_limit: 2g cpus: 2.0 pids_limit: 64 volumes: postgres_data: minio_data: crm_data: ollama_data: