156 lines
6.2 KiB
YAML
156 lines
6.2 KiB
YAML
name: knowledge-fs
|
|
|
|
services:
|
|
postgres:
|
|
image: pgvector/pgvector:pg16
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB:-knowledge_fs}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-knowledge_fs}
|
|
POSTGRES_USER: ${POSTGRES_USER:-knowledge_fs}
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
ports:
|
|
- "${POSTGRES_PORT:-5432}:5432"
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
- ./postgres-init:/docker-entrypoint-initdb.d:ro
|
|
|
|
minio:
|
|
image: minio/minio:latest
|
|
command: server /data --console-address ":9001"
|
|
environment:
|
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-knowledge-secret}
|
|
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-knowledge}
|
|
healthcheck:
|
|
test: ["CMD", "mc", "ready", "local"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
ports:
|
|
- "${MINIO_API_PORT:-9000}:9000"
|
|
- "${MINIO_CONSOLE_PORT:-9001}:9001"
|
|
volumes:
|
|
- minio-data:/data
|
|
|
|
minio-bootstrap:
|
|
image: minio/mc:latest
|
|
depends_on:
|
|
minio:
|
|
condition: service_healthy
|
|
entrypoint: ["/bin/sh", "-lc"]
|
|
command:
|
|
- mc alias set local http://minio:9000 "$${MINIO_ROOT_USER}" "$${MINIO_ROOT_PASSWORD}" && mc mb --ignore-existing "local/$${MINIO_BUCKET}"
|
|
environment:
|
|
MINIO_BUCKET: ${MINIO_BUCKET:-knowledge-fs}
|
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-knowledge-secret}
|
|
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-knowledge}
|
|
|
|
unstructured:
|
|
image: downloads.unstructured.io/unstructured-io/unstructured-api:latest
|
|
ports:
|
|
- "${UNSTRUCTURED_PORT:-8000}:8000"
|
|
|
|
api:
|
|
build:
|
|
context: ../..
|
|
dockerfile: apps/api/Dockerfile
|
|
image: knowledge-fs-api:local
|
|
profiles: ["apps"]
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
minio-bootstrap:
|
|
condition: service_completed_successfully
|
|
unstructured:
|
|
condition: service_started
|
|
environment:
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-knowledge_fs}:${POSTGRES_PASSWORD:-knowledge_fs}@postgres:5432/${POSTGRES_DB:-knowledge_fs}
|
|
DIFY_INNER_API_KEY: ${DIFY_INNER_API_KEY:-}
|
|
DIFY_INNER_API_URL: ${DIFY_INNER_API_URL:-http://host.docker.internal:5001}
|
|
DIFY_DATASOURCE_RUNTIME_MAX_RESPONSE_BYTES: ${DIFY_DATASOURCE_RUNTIME_MAX_RESPONSE_BYTES:-8388608}
|
|
DIFY_DATASOURCE_RUNTIME_REQUEST_TIMEOUT_MS: ${DIFY_DATASOURCE_RUNTIME_REQUEST_TIMEOUT_MS:-60000}
|
|
DIFY_MODEL_RUNTIME_MAX_RESPONSE_BYTES: ${DIFY_MODEL_RUNTIME_MAX_RESPONSE_BYTES:-8388608}
|
|
DIFY_MODEL_RUNTIME_REQUEST_TIMEOUT_MS: ${DIFY_MODEL_RUNTIME_REQUEST_TIMEOUT_MS:-60000}
|
|
KNOWLEDGE_INTEGRATED_MODE_ENABLED: ${KNOWLEDGE_INTEGRATED_MODE_ENABLED:-false}
|
|
MINIO_ACCESS_KEY: ${MINIO_ROOT_USER:-knowledge}
|
|
MINIO_BUCKET: ${MINIO_BUCKET:-knowledge-fs}
|
|
MINIO_ENDPOINT: http://minio:9000
|
|
MINIO_REGION: ${MINIO_REGION:-us-east-1}
|
|
MINIO_SECRET_KEY: ${MINIO_ROOT_PASSWORD:-knowledge-secret}
|
|
NODE_ENV: development
|
|
PORT: 8787
|
|
KNOWLEDGE_DEV_AUTH_TOKEN: ${KNOWLEDGE_DEV_AUTH_TOKEN:-dev-token}
|
|
KNOWLEDGE_DEV_SUBJECT_ID: ${KNOWLEDGE_DEV_SUBJECT_ID:-dev-user}
|
|
KNOWLEDGE_DEV_TENANT_ID: ${KNOWLEDGE_DEV_TENANT_ID:-tenant-dev}
|
|
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
|
|
ANTHROPIC_BASE_URL: ${ANTHROPIC_BASE_URL:-}
|
|
COHERE_API_KEY: ${COHERE_API_KEY:-}
|
|
COHERE_BASE_URL: ${COHERE_BASE_URL:-}
|
|
GEMINI_API_KEY: ${GEMINI_API_KEY:-}
|
|
GEMINI_BASE_URL: ${GEMINI_BASE_URL:-}
|
|
KNOWLEDGE_ANSWER_MAX_OUTPUT_TOKENS: ${KNOWLEDGE_ANSWER_MAX_OUTPUT_TOKENS:-}
|
|
KNOWLEDGE_ANSWER_MODEL: ${KNOWLEDGE_ANSWER_MODEL:-}
|
|
KNOWLEDGE_ANSWER_PROVIDER: ${KNOWLEDGE_ANSWER_PROVIDER:-}
|
|
KNOWLEDGE_COMMUNITY_SUMMARY_MAX_OUTPUT_TOKENS: ${KNOWLEDGE_COMMUNITY_SUMMARY_MAX_OUTPUT_TOKENS:-}
|
|
KNOWLEDGE_COMMUNITY_SUMMARY_MODEL: ${KNOWLEDGE_COMMUNITY_SUMMARY_MODEL:-}
|
|
KNOWLEDGE_ENTITY_EXTRACTION_MAX_ENTITIES_PER_NODE: ${KNOWLEDGE_ENTITY_EXTRACTION_MAX_ENTITIES_PER_NODE:-}
|
|
KNOWLEDGE_ENTITY_EXTRACTION_MAX_NODES_PER_RUN: ${KNOWLEDGE_ENTITY_EXTRACTION_MAX_NODES_PER_RUN:-}
|
|
KNOWLEDGE_EMBEDDING_DIMENSION: ${KNOWLEDGE_EMBEDDING_DIMENSION:-}
|
|
KNOWLEDGE_EMBEDDING_MODEL: ${KNOWLEDGE_EMBEDDING_MODEL:-}
|
|
KNOWLEDGE_EMBEDDING_PROVIDER: ${KNOWLEDGE_EMBEDDING_PROVIDER:-}
|
|
KNOWLEDGE_ENTITY_EXTRACTION_MAX_OUTPUT_TOKENS: ${KNOWLEDGE_ENTITY_EXTRACTION_MAX_OUTPUT_TOKENS:-}
|
|
KNOWLEDGE_ENTITY_EXTRACTION_MODEL: ${KNOWLEDGE_ENTITY_EXTRACTION_MODEL:-}
|
|
KNOWLEDGE_ENTITY_EXTRACTION_PROVIDER: ${KNOWLEDGE_ENTITY_EXTRACTION_PROVIDER:-}
|
|
KNOWLEDGE_RERANK_MODEL: ${KNOWLEDGE_RERANK_MODEL:-}
|
|
KNOWLEDGE_RERANK_PROVIDER: ${KNOWLEDGE_RERANK_PROVIDER:-}
|
|
KNOWLEDGE_RELATION_EXTRACTION_MAX_OUTPUT_TOKENS: ${KNOWLEDGE_RELATION_EXTRACTION_MAX_OUTPUT_TOKENS:-}
|
|
KNOWLEDGE_RELATION_EXTRACTION_MAX_RELATIONS_PER_NODE: ${KNOWLEDGE_RELATION_EXTRACTION_MAX_RELATIONS_PER_NODE:-}
|
|
KNOWLEDGE_RELATION_EXTRACTION_MODEL: ${KNOWLEDGE_RELATION_EXTRACTION_MODEL:-}
|
|
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
|
|
OPENAI_BASE_URL: ${OPENAI_BASE_URL:-}
|
|
OPENAI_EMBEDDING_BASE_URL: ${OPENAI_EMBEDDING_BASE_URL:-}
|
|
OPENAI_MODEL: ${OPENAI_MODEL:-}
|
|
VOYAGE_API_KEY: ${VOYAGE_API_KEY:-}
|
|
VOYAGE_BASE_URL: ${VOYAGE_BASE_URL:-}
|
|
UNSTRUCTURED_API_URL: http://unstructured:8000
|
|
ports:
|
|
- "${API_PORT:-8788}:8787"
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD",
|
|
"node",
|
|
"-e",
|
|
"fetch('http://127.0.0.1:8787/ready').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))",
|
|
]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 30s
|
|
|
|
admin:
|
|
build:
|
|
context: ../..
|
|
dockerfile: apps/admin/Dockerfile
|
|
image: knowledge-fs-admin:local
|
|
profiles: ["apps"]
|
|
depends_on:
|
|
api:
|
|
condition: service_healthy
|
|
environment:
|
|
HOSTNAME: 0.0.0.0
|
|
KNOWLEDGE_API_BASE_URL: http://api:8787
|
|
KNOWLEDGE_DEV_AUTH_TOKEN: ${KNOWLEDGE_DEV_AUTH_TOKEN:-dev-token}
|
|
NEXT_PUBLIC_API_BASE_URL: http://localhost:${API_PORT:-8788}
|
|
NODE_ENV: production
|
|
PORT: 3000
|
|
ports:
|
|
- "${ADMIN_PORT:-3000}:3000"
|
|
|
|
volumes:
|
|
minio-data:
|
|
postgres-data:
|