This commit is contained in:
qing committed 2026-07-30 21:57:04 +08:00
1 parent f935448389
commit 3f97dd92ef
26 files changed
+1865 -451

No files matched your search

+109
View File
@@ -0,0 +1,109 @@
version: '3.8'
# ── 持久化说明 ──────────────────────────────────────────────────────
# 默认使用 Docker named volume(适合生产,性能好)。
# 开发调试或需要直接访问数据库文件时,可改为 bind mount:
# volumes:
# - ./data/db:/app/data # SQLite 数据库文件
# - ./backups:/app/backups # 备份输出目录
#
# 注意:bind mount 在 macOS/Windows 上文件系统性能比 named volume 差,
# 但方便直接复制/查看数据库文件。
services:
# ── 数据库服务 (pymsg TCP协议) ──────────────────────────────────
db:
build:
context: .
dockerfile: db/Dockerfile
container_name: micro-db
restart: unless-stopped
ports:
- "127.0.0.1:8005:8005"
volumes:
# 方式1: Docker named volume(推荐生产)
- db_data:/app/data
# 方式2: Bind mount(开发/需要直接访问文件时取消注释)
# - ./data/db:/app/data
# 备份输出目录(bind mount 方便取备份文件)
- ./backups:/app/backups
environment:
- LISTEN_ADDR=0.0.0.0
- LISTEN_PORT=8005
- DATABASE_URL=sqlite:////app/data/database.db
- WORKERS=4
healthcheck:
test: ["CMD", "python", "-c", "import socket; s=socket.socket(); s.settimeout(2); s.connect(('localhost', 8005)); s.close()"]
interval: 15s
timeout: 5s
retries: 3
start_period: 5s
networks:
- micro_net
# ── AI内容审核服务 ──────────────────────────────────────────────
ai_review:
build:
context: ./ai_review
dockerfile: Dockerfile
container_name: micro-ai-review
restart: unless-stopped
ports:
- "127.0.0.1:8007:8007"
volumes:
- chroma_data:/app/chroma
# - ./data/chroma:/app/chroma # bind mount 选项
environment:
- AI_REVIEW_HOST=0.0.0.0
- AI_REVIEW_PORT=8007
- CHROMA_PERSIST_DIR=/app/chroma
env_file:
- ./ai_review/.env
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8007/health', timeout=5)"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
networks:
- micro_net
# ── DNFS 树状文件系统服务 ──────────────────────────────────────
dnfs:
build:
context: .
dockerfile: dnfs/Dockerfile
container_name: micro-dnfs
restart: unless-stopped
ports:
- "127.0.0.1:8006:8006"
environment:
- LISTEN_ADDR=0.0.0.0
- LISTEN_PORT=8006
- DB_HOST=db
- DB_PORT=8005
- REVIEW_URL=http://ai_review:8007/review
depends_on:
db:
condition: service_healthy
ai_review:
condition: service_healthy
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8006/get_notes', data=b'{\"pid\":0}', timeout=3)"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
networks:
- micro_net
networks:
micro_net:
driver: bridge
name: micro-network
volumes:
db_data:
name: micro-db-data
chroma_data:
name: micro-chroma-data