10 个平台的 web 端全部用 TypeScript 移植自 cv-cat 的开源项目,请求与上游逐字节对拍。 统一的命令语法与 JSON 输出、按 平台 × 端 × 账号 隔离的登录态、给 AI Agent 用的技能与 llms.txt。
53 lines
2.5 KiB
Docker
53 lines
2.5 KiB
Docker
# catbus 的容器镜像:与 npm 发布同一条路径,先打出三个包(catbus-cli、@cv-cat/catbus-assets-jd、@cv-cat/catbus-assets-ocr),
|
||
# 再在运行镜像里全局安装这三个 tarball(AGENTS 7.2)。运行镜像里没有源码和开发依赖。
|
||
#
|
||
# docker build -t catbus .
|
||
# docker run --rm -it -v catbus-data:/data catbus bilibili auth login
|
||
# docker run --rm -v catbus-data:/data catbus bilibili item search 猫
|
||
#
|
||
# 构建时要联网:安装 npm 依赖、取回验证码模型(京东模型来自 GitHub 上的 cv-cat/JdApis,OCR 模型来自 PyPI 上的 ddddocr wheel,
|
||
# 都校验 sha256)。构建上下文里已经有模型文件(本机跑过 npm run assets:jd / assets:ocr)时直接用,不再下载。
|
||
|
||
ARG NODE_VERSION=24
|
||
|
||
# ---------------------------------------------------------------- 打包
|
||
FROM node:${NODE_VERSION}-bookworm-slim AS pack
|
||
WORKDIR /src
|
||
|
||
# 先装依赖,源码变了也能复用这一层
|
||
COPY package.json package-lock.json ./
|
||
COPY packages/assets-jd/package.json packages/assets-jd/
|
||
COPY packages/assets-ocr/package.json packages/assets-ocr/
|
||
RUN npm ci --no-audit --no-fund
|
||
|
||
COPY . .
|
||
RUN npm run assets:jd && npm run assets:ocr \
|
||
&& npm pack --silent \
|
||
&& npm pack --silent -w packages/assets-jd \
|
||
&& npm pack --silent -w packages/assets-ocr \
|
||
&& mkdir /out && mv ./*.tgz /out/
|
||
|
||
# ---------------------------------------------------------------- 运行
|
||
FROM node:${NODE_VERSION}-bookworm-slim
|
||
|
||
LABEL org.opencontainers.image.title="catbus" \
|
||
org.opencontainers.image.description="catbus(猫巴士):一个命令操作小红书、抖音、TikTok、B 站、快手、微博、闲鱼、淘宝、京东、X" \
|
||
org.opencontainers.image.source="https://github.com/cv-cat/catbus" \
|
||
org.opencontainers.image.licenses="MIT"
|
||
|
||
COPY --from=pack /out/ /tmp/pkgs/
|
||
RUN npm install -g --no-audit --no-fund /tmp/pkgs/cv-cat-catbus-assets-jd-*.tgz /tmp/pkgs/cv-cat-catbus-assets-ocr-*.tgz /tmp/pkgs/catbus-cli-*.tgz \
|
||
&& rm -rf /tmp/pkgs /root/.npm \
|
||
&& mkdir -p /data /work && chmod 700 /data
|
||
|
||
# 登录态、配置、二维码都在 /data(AGENTS 5.1 的 ~/.catbus),挂一个卷保存;下载的文件默认写到工作目录 /work。
|
||
# 默认以 root 运行,挂进来的任何目录都能写。Linux 上想让文件归自己所有,加 --user "$(id -u):$(id -g)",
|
||
# 同时把 /data 换成自己的目录(例如 -v ~/.catbus:/data,和本机的 catbus 共用登录态)。
|
||
ENV CATBUS_HOME=/data \
|
||
TZ=Asia/Shanghai
|
||
VOLUME ["/data"]
|
||
WORKDIR /work
|
||
|
||
ENTRYPOINT ["catbus"]
|
||
CMD ["--help"]
|