Files
Docker/idcard-api/docker-compose.yml
2026-10-18 07:40:42 +08:00

50 lines
2.2 KiB
YAML

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: