chore(deploy): 本地部署脚本、容器配置与运行说明
PostgreSQL/pgvector 与 Redis 独立容器,后端、worker、前端可一键启停;不覆盖既有密钥。
This commit is contained in:
1 parent
83a16ed07d
commit
5be5ca3376
18 files changed
+1796
No files matched your search
@@ -0,0 +1,199 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
frontend:
|
||||
image: chattermate/frontend:latest
|
||||
ports:
|
||||
- "80:80"
|
||||
env_file:
|
||||
- ./frontend/.env
|
||||
depends_on:
|
||||
- backend
|
||||
networks:
|
||||
- chattermate-network
|
||||
restart: unless-stopped
|
||||
|
||||
backend:
|
||||
image: chattermate/backend:latest
|
||||
ports:
|
||||
- "8000:8000"
|
||||
environment:
|
||||
- REDIS_ENABLED=true
|
||||
- REDIS_URL=redis://redis:6379/0
|
||||
- WORKERS=1
|
||||
- TIMEOUT=120
|
||||
- LOG_LEVEL=info
|
||||
# HuggingFace caching configuration
|
||||
- HF_HOME=/app/.cache/huggingface
|
||||
- HF_HUB_CACHE=/app/.cache/huggingface/hub
|
||||
- HF_HUB_DISABLE_TELEMETRY=1
|
||||
# Reduce parallelism to avoid conflicts
|
||||
- EMBEDDING_MAX_WORKERS=4
|
||||
- KB_MAX_WORKERS=4
|
||||
# Enable safe embedding mode for Docker
|
||||
- EMBEDDING_SINGLE_THREADED=true
|
||||
- EMBEDDING_SEQUENTIAL_FALLBACK=true
|
||||
env_file:
|
||||
- ./backend/.env
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- chattermate-network
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- backend_data:/app/uploads
|
||||
- temp_data:/app/temp
|
||||
- ./config:/app/config
|
||||
# Add caching volumes for models
|
||||
- huggingface_cache:/app/.cache/huggingface
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-X", "GET", "-f", "http://localhost:8000/health"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
|
||||
knowledge_processor:
|
||||
image: chattermate/backend:latest
|
||||
command: python -m app.workers.knowledge_processor
|
||||
environment:
|
||||
- REDIS_ENABLED=true
|
||||
- REDIS_URL=redis://redis:6379/0
|
||||
- LOG_LEVEL=info
|
||||
- PYTHONUNBUFFERED=1
|
||||
# HuggingFace caching configuration (shared with backend)
|
||||
- HF_HOME=/app/.cache/huggingface
|
||||
- HF_HUB_CACHE=/app/.cache/huggingface/hub
|
||||
- HF_HUB_DISABLE_TELEMETRY=1
|
||||
# PyTorch configuration (shared with backend)
|
||||
# Reduce parallelism to avoid conflicts
|
||||
- EMBEDDING_MAX_WORKERS=2
|
||||
- KB_MAX_WORKERS=2
|
||||
# Enable safe embedding mode for Docker
|
||||
- EMBEDDING_SINGLE_THREADED=true
|
||||
- EMBEDDING_SEQUENTIAL_FALLBACK=true
|
||||
env_file:
|
||||
- ./backend/.env
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- chattermate-network
|
||||
restart: always
|
||||
volumes:
|
||||
- backend_data:/app/uploads
|
||||
- temp_data:/app/temp
|
||||
- ./config:/app/config
|
||||
# Share the same caching volumes with backend
|
||||
- huggingface_cache:/app/.cache/huggingface
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
crm_sync:
|
||||
image: chattermate/backend:latest
|
||||
command: python -m app.workers.crm_sync
|
||||
environment:
|
||||
- LOG_LEVEL=info
|
||||
- PYTHONUNBUFFERED=1
|
||||
env_file:
|
||||
- ./backend/.env
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- chattermate-network
|
||||
restart: always
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
ticket_investigator:
|
||||
image: chattermate/backend:latest
|
||||
command: python -m app.workers.ticket_investigator
|
||||
environment:
|
||||
- REDIS_ENABLED=true
|
||||
- REDIS_URL=redis://redis:6379/0
|
||||
- LOG_LEVEL=info
|
||||
- PYTHONUNBUFFERED=1
|
||||
# FastEmbed (dedup embeddings) shares the HuggingFace cache
|
||||
- HF_HOME=/app/.cache/huggingface
|
||||
- HF_HUB_CACHE=/app/.cache/huggingface/hub
|
||||
- HF_HUB_DISABLE_TELEMETRY=1
|
||||
env_file:
|
||||
- ./backend/.env
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- chattermate-network
|
||||
restart: always
|
||||
volumes:
|
||||
- huggingface_cache:/app/.cache/huggingface
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
db:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.postgres
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
- POSTGRES_USER=postgres
|
||||
- POSTGRES_PASSWORD=postgres
|
||||
- POSTGRES_DB=chattermate
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- chattermate-network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
networks:
|
||||
- chattermate-network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 5s
|
||||
command: redis-server --appendonly yes --maxmemory 512mb --maxmemory-policy allkeys-lru
|
||||
|
||||
networks:
|
||||
chattermate-network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
redis_data:
|
||||
backend_data:
|
||||
temp_data:
|
||||
# Add new volumes for model caching
|
||||
huggingface_cache:
|
||||
Reference in new issue
Block a user