Files
iistwin/docker-compose.deps.yml
Ильяс Султанов 75ec0f25bb chore(repo): дедуп formatAmount, пины образов, дефолты MinIO, доля any
Шаги 2.3 и 2.4 плана production-готовности:
- lib/format.ts formatAmount вместо 2 локальных копий
- пины тегов minio/rclone/ollama/traccar/pgvector + osrm по digest
- minioadmin без дефолта (env required, dev-подсказки в .env.example)
- 28 any в auto-transitions/shared типизированы из @shared/schema
- удалён _tablefield_orig.txt
- check/lint/build чисто, vitest 104/104
2026-09-08 01:07:55 +03:00

129 lines
4.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
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
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
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
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
volumes:
postgres_data:
minio_data:
crm_data:
ollama_data: