From 6c3808923402e528b29ec3f28b4232edc9a6801a Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 16 Aug 2026 21:04:28 +0800 Subject: [PATCH] feat(docker): add scraping API compose service --- README.md | 15 +++++++++++++-- docker-compose.yml | 31 +++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b5e5eaa..3efc1e3 100644 --- a/README.md +++ b/README.md @@ -217,14 +217,25 @@ cookie 落在 `.auth/`(已 gitignore,内含可直接冒充账号的凭据, 镜像里要带 Xvfb 虚拟显示、日文字体,以及给人工接管用的可选 x11vnc,抓取镜像没有这些。 ```bash -docker compose up -d # 起交易服务(本地机侧) -docker compose --profile gateway up -d # 额外起下单网关(正式拓扑里它在服务器侧) +# 同机联调:起抓取 API 与交易服务 +docker compose up -d + +# 正式拓扑:服务器侧只起抓取 API,本地机侧只起交易服务 +docker compose up -d scraping +docker compose up -d trading + +# 额外起下单网关(正式拓扑里它在服务器侧) +docker compose --profile gateway up -d ``` 部署前置与挂载说明写在 `docker-compose.yml` 文件头:至少要有 `.env` 与 `account.yaml`, `.auth/`、`data/`、`logs/` 走挂载持久化。Jenkins 上两个镜像由同一条流水线产出 (`BUILD_SCRAPING` / `BUILD_TRADING` 两个开关控制)。 +抓取服务默认使用 `git.jerryyan.net/jp/rakuten-api:latest`,可通过 +`RAKUTEN_SCRAPING_IMAGE`、`RAKUTEN_SCRAPING_TAG` 与 `RAKUTEN_SCRAPING_BIND` +分别覆盖镜像名、tag 和宿主机监听地址;默认只绑定 `127.0.0.1:31107`。 + ## 测试 ```bash diff --git a/docker-compose.yml b/docker-compose.yml index e4fe835..50ffc23 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,9 @@ -# 有状态端部署(下单购买 + 订单查询/监控) +# 抓取与有状态端部署 # -# 默认只起交易服务 trading(本地机侧:持登录态、执行下单、常驻订单监控): +# 默认起抓取服务 scraping(:31107)与交易服务 trading(:31108): # docker compose up -d +# 生产环境仍可按部署位置分别启动:服务器侧 `docker compose up -d scraping`, +# 本地机侧 `docker compose up -d trading`。抓取服务匿名无状态,可独立多开。 # 下单任务网关按设计部署在**服务器侧**(与抓取服务同机),是另一个部署单元, # 所以放在 gateway profile 里,不会被默认启动。真要在这台机上一起跑(自包含 # 联调 / 单机部署)时: @@ -27,6 +29,31 @@ # data/(真实姓名地址等 PII 与证据快照)全在宿主机目录里,注意宿主机权限与备份加密。 services: + scraping: + # 商品获取 API:乐天市场与ラクマ抓取,匿名无状态,可独立扩容。 + image: ${RAKUTEN_SCRAPING_IMAGE:-git.jerryyan.net/jp/rakuten-api}:${RAKUTEN_SCRAPING_TAG:-latest} + build: + context: . + dockerfile: Dockerfile + container_name: rakuten-api + restart: unless-stopped + env_file: + - .env + environment: + RAKUTEN_APP_HOST: 0.0.0.0 + RAKUTEN_APP_PORT: 31107 + RAKUTEN_APP_ENV: prod + ports: + # 默认仅供本机反向代理访问;需要直连时显式设 RAKUTEN_SCRAPING_BIND。 + - "${RAKUTEN_SCRAPING_BIND:-127.0.0.1}:31107:31107" + volumes: + - ./logs:/app/logs + logging: + driver: json-file + options: + max-size: "50m" + max-file: "5" + trading: # 交易服务:加购 → 下单 → 付款 → 订单监控,以及 /api/auth/* /api/cart/* image: ${RAKUTEN_TRADING_IMAGE:-git.jerryyan.net/jp/rakuten-trading}:${RAKUTEN_TRADING_TAG:-latest}