50 lines
2.2 KiB
YAML
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:
|