# Token Meter 云服务器容器镜像
# 以服务器角色运行：TM_ROLE=server、无托盘/通知、数据落 /app/data/server（外部 volume）
# 构建上下文 = token-meter/ 目录（见仓库根 docker-compose.yml 的 build.context）

FROM node:18-bookworm-slim

# better-sqlite3 在无预编译产物时需本地编译工具链
RUN apt-get update && apt-get install -y --no-install-recommends \
        python3 make g++ \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY package.json package-lock.json ./
RUN npm ci --no-audit --no-fund

COPY . .

ENV TM_ROLE=server \
    DB_ENGINE=sqlite \
    TOKEN_METER_TRAY=0 \
    AI_USAGE_BRIDGE_HOST=0.0.0.0 \
    AI_USAGE_BRIDGE_PORT=8788 \
    NODE_ENV=production

# 数据目录（含 SQLite 库与单例锁）由外部 volume 挂载；日志目录挂载可选
VOLUME ["/app/data/server"]

EXPOSE 8788

# 优雅退出：容器收到 SIGTERM → server.js gracefulShutdown（含释放单例锁）
CMD ["node", "server.js"]
