services: idcard-api: build: context: . # 基础镜像默认走国内公共源,绕开 fnOS 的 daemon 加速配置(那个源需授权,常 401)。 # 想换源或改回官方:在 .env 里设 BASE_IMAGE=python:3.11-slim args: BASE_IMAGE: ${BASE_IMAGE:-docker.m.daocloud.io/library/python:3.11-slim} container_name: idcard-api restart: unless-stopped environment: - TZ=Asia/Shanghai - API_KEY=${API_KEY:-} # 旧版单密钥,兼容保留 # 多 token 鉴权:名称:token,名称2:token2 —— 每个调用方一把,可单独吊销 - "API_TOKENS=${API_TOKENS:-}" # 短期 token(可选):设了 CLIENT_SECRET 才启用 /api/v1/auth/token - "CLIENT_ID=${CLIENT_ID:-default}" - "CLIENT_SECRET=${CLIENT_SECRET:-}" - "TOKEN_TTL=${TOKEN_TTL:-3600}" # 浏览器前端跨源调用需要。默认 * 方便开发;生产建议改成实际前端地址(逗号分隔) - "CORS_ORIGINS=${CORS_ORIGINS:-*}" - MAX_IMAGE_BYTES=5242880 # 5MB,身份证拍照 2-4MB 足够 - MAX_SIDE=960 # Celeron 1007U @1.5G 单核弱,960 换速度;文字仍有约 25px - MAX_DIMENSION=6000 # header 尺寸硬上限,防解压炸弹;手机拍照 3000-4000px 不受影响 - DET_LIMIT_SIDE_LEN=736 - REC_BATCH_NUM=1 # 低内存必须为 1,batch 只涨峰值不省时间 - OMP_NUM_THREADS=1 # 关键:cpus 限额不改变容器内 os.cpu_count() - OPENBLAS_NUM_THREADS=1 - MKL_NUM_THREADS=1 ports: # 去掉 127.0.0.1 绑定:局域网其他容器/设备要能调用。 # 安全靠 API_KEY 鉴权 + 不要在路由器上映射公网端口。 - "8000:8000" volumes: - rapidocr-models:/app/models - rapidocr-home:/app/.rapidocr_model # 低配约束:只用 1 核,容器限 1G,其余留给 fnOS 系统和其他服务。 # 本配置针对 Celeron 1007U / 4GB 单条内存机型调低;更好机器可调回 1280m + MAX_SIDE=1200 cpus: 1.0 mem_limit: 1024m logging: driver: json-file options: max-size: "10m" max-file: "3" volumes: rapidocr-models: rapidocr-home: