services:
db:
image: koalalove/gcr-db:latest
container_name: gcr_db
environment:
- POSTGRES_DB=${DB_NAME:-goodcare}
- POSTGRES_USER=${DB_USER:-goodcare}
- POSTGRES_PASSWORD=${DB_PASSWORD:-goodcare123}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
# 数据库文件持久化到本机目录,迁移/备份直接 cp 即可
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-goodcare} -d ${DB_NAME:-goodcare}"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- gcr_net
api:
image: koalalove/gcr-api:latest
container_name: gcr_api
environment:
- DATABASE_URL=postgresql+asyncpg://${DB_USER:-goodcare}:${DB_PASSWORD:-goodcare123}@db:5432/${DB_NAME:-goodcare}
- SECRET_KEY=${SECRET_KEY:-change-this-secret-key-in-production}
- AI_PROVIDER=${AI_PROVIDER:-}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
- OPENAI_BASE_URL=${OPENAI_BASE_URL:-}
- AI_MODEL=${AI_MODEL:-}
- AI_MAX_TOKENS=${AI_MAX_TOKENS:-2000}
- INSTITUTION_NAME=${INSTITUTION_NAME:-善护照护中心}
- EXPORT_DIR=/app/exports
- DEBUG=false
- ADMIN_EMAIL=${ADMIN_EMAIL}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- ADMIN_FULL_NAME=${ADMIN_FULL_NAME:-系统管理员}
- TOOL_FALL_ENABLED=${TOOL_FALL_ENABLED:-true}
- TOOL_FALL_URL=${TOOL_FALL_URL:-https://dify.careedu.de/workflow/Bxabrazq3bPVaecI}
- TOOL_FALL_LABEL=${TOOL_FALL_LABEL:-跌倒风险评估}
- TOOL_BALANCE_ENABLED=${TOOL_BALANCE_ENABLED:-true}
- TOOL_BALANCE_URL=${TOOL_BALANCE_URL:-https://dify.careedu.de/workflow/CAvlYwzmC9FKCf8S}
- TOOL_BALANCE_LABEL=${TOOL_BALANCE_LABEL:-平衡能力评估}
volumes:
# 导出的 PDF 文件持久化到本机目录
- ./data/exports:/app/exports
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
interval: 15s
timeout: 5s
retries: 5
start_period: 30s
restart: unless-stopped
networks:
- gcr_net
frontend:
image: koalalove/gcr-frontend:latest
container_name: gcr_frontend
ports:
- "${FRONTEND_PORT:-80}:80"
depends_on:
api:
condition: service_healthy
restart: unless-stopped
networks:
- gcr_net
networks:
gcr_net:
driver: bridge
# ============================================================
# Good Care Record — 环境变量配置
# 复制此文件为 .env 并填写实际值
# ============================================================
# 品牌名(侧边栏 + 移动端顶部)
BRAND_NAME=智护康养服务端
# ── 数据库 ──────────────────────────────────────────────────
DB_NAME=goodcare
DB_USER=goodcare
DB_PASSWORD=请修改为强密码
# ── 应用安全 ─────────────────────────────────────────────────
# 生产环境必须修改!可用 openssl rand -hex 32 生成
SECRET_KEY=请修改为随机64字符字符串
# ── 管理员账号(首次启动自动创建)────────────────────────────
[email protected]
ADMIN_PASSWORD=请修改为强密码
ADMIN_FULL_NAME=系统管理员
# ── 机构信息 ─────────────────────────────────────────────────
# 显示在:PDF 封面、PDF 页眉、系统侧边栏
INSTITUTION_NAME=善护照护中心
# ── 访问端口 ─────────────────────────────────────────────────
FRONTEND_PORT=80
# ── AI 配置(可选,也可在管理界面配置,界面配置优先级更高)───
# 提供商: anthropic | siliconflow | deepseek | moonshot | zhipu | qwen | openai | custom
AI_PROVIDER=siliconflow
# 各提供商 API Key
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
# 各提供商 Base URL(Anthropic 无需填写)
# siliconflow: https://api.siliconflow.cn/v1
# deepseek: https://api.deepseek.com/v1
# moonshot: https://api.moonshot.cn/v1
# qwen: https://dashscope.aliyuncs.com/compatible-mode/v1
# openai: https://api.openai.com/v1
OPENAI_BASE_URL=https://api.siliconflow.cn/v1
# 模型名称
# siliconflow 示例: deepseek-ai/DeepSeek-V3
# deepseek 示例: deepseek-chat
# openai 示例: gpt-4o-mini
AI_MODEL=deepseek-ai/DeepSeek-V3
AI_MAX_TOKENS=2000
# ── 评估工具(悬浮按钮)─────────────────────────────────────────────────────
# 设置为 false 可隐藏对应按钮,true 启用
TOOL_FALL_ENABLED=true
TOOL_FALL_URL=https://example.com
TOOL_FALL_LABEL=跌倒风险评估
TOOL_BALANCE_ENABLED=true
TOOL_BALANCE_URL=https://example.com
TOOL_BALANCE_LABEL=平衡能力评估
# 自定义工具(默认关闭,填写 URL 并设为 true 即可启用)
TOOL_EXTRA_ENABLED=true
TOOL_EXTRA_URL=https://www.baidu.com
TOOL_EXTRA_LABEL=自定义工具
Content type
Image
Digest
sha256:967a9cd61…
Size
20.5 MB
Last updated
4 months ago
docker pull koalalove/gcr-frontend