59 lines
1.5 KiB
YAML
59 lines
1.5 KiB
YAML
services:
|
|
# 1. 机器人主逻辑服务
|
|
bot:
|
|
build: ./bot
|
|
container_name: accounting_bot
|
|
restart: always
|
|
env_file: .env
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy # 确保数据库就绪后再启动
|
|
vlm-service:
|
|
condition: service_started
|
|
volumes:
|
|
- ./bot:/app
|
|
- ./data/temp:/app/temp
|
|
networks:
|
|
- accounting_net
|
|
environment:
|
|
- BOT_PROXY=${GLOBAL_PROXY} # 注入代理变量
|
|
- PYTHONUNBUFFERED=1 # 关键:禁用 Python 的输出缓冲
|
|
|
|
|
|
# 2. 本地视觉大模型 (Ollama + Qwen3-VL)
|
|
vlm-service:
|
|
image: ollama/ollama:latest
|
|
container_name: vlm_service
|
|
runtime: nvidia # 关键:直接调用 NVIDIA 运行时,解决权限和 OCI 错误
|
|
environment:
|
|
- NVIDIA_VISIBLE_DEVICES=all
|
|
- OLLAMA_KEEP_ALIVE=24h # 让模型常驻显存,提高多人使用的响应速度
|
|
|
|
volumes:
|
|
- ./data/ollama:/root/.ollama
|
|
restart: always
|
|
networks:
|
|
- accounting_net
|
|
|
|
# 3. 数据库服务 (PostgreSQL)
|
|
db:
|
|
image: postgres:15-alpine
|
|
container_name: accounting_db
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
volumes:
|
|
- ./data/postgres:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: always
|
|
networks:
|
|
- accounting_net
|
|
|
|
networks:
|
|
accounting_net:
|
|
driver: bridge |