feat(docker): add scraping API compose service

This commit is contained in:
2026-08-16 21:04:28 +08:00
parent 912e10086f
commit 6c38089234
2 changed files with 42 additions and 4 deletions
+13 -2
View File
@@ -217,14 +217,25 @@ cookie 落在 `.auth/`(已 gitignore,内含可直接冒充账号的凭据,
镜像里要带 Xvfb 虚拟显示、日文字体,以及给人工接管用的可选 x11vnc,抓取镜像没有这些。 镜像里要带 Xvfb 虚拟显示、日文字体,以及给人工接管用的可选 x11vnc,抓取镜像没有这些。
```bash ```bash
docker compose up -d # 起交易服务(本地机侧) # 同机联调:起抓取 API 与交易服务
docker compose --profile gateway up -d # 额外起下单网关(正式拓扑里它在服务器侧) 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` 部署前置与挂载说明写在 `docker-compose.yml` 文件头:至少要有 `.env``account.yaml`
`.auth/``data/``logs/` 走挂载持久化。Jenkins 上两个镜像由同一条流水线产出 `.auth/``data/``logs/` 走挂载持久化。Jenkins 上两个镜像由同一条流水线产出
`BUILD_SCRAPING` / `BUILD_TRADING` 两个开关控制)。 `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 ```bash
+29 -2
View File
@@ -1,7 +1,9 @@
# 有状态端部署(下单购买 + 订单查询/监控) # 抓取与有状态端部署
# #
# 默认只起交易服务 trading(本地机侧:持登录态、执行下单、常驻订单监控): # 默认起抓取服务 scraping(:31107)与交易服务 trading(:31108):
# docker compose up -d # docker compose up -d
# 生产环境仍可按部署位置分别启动:服务器侧 `docker compose up -d scraping`,
# 本地机侧 `docker compose up -d trading`。抓取服务匿名无状态,可独立多开。
# 下单任务网关按设计部署在**服务器侧**(与抓取服务同机),是另一个部署单元, # 下单任务网关按设计部署在**服务器侧**(与抓取服务同机),是另一个部署单元,
# 所以放在 gateway profile 里,不会被默认启动。真要在这台机上一起跑(自包含 # 所以放在 gateway profile 里,不会被默认启动。真要在这台机上一起跑(自包含
# 联调 / 单机部署)时: # 联调 / 单机部署)时:
@@ -27,6 +29,31 @@
# data/(真实姓名地址等 PII 与证据快照)全在宿主机目录里,注意宿主机权限与备份加密。 # data/(真实姓名地址等 PII 与证据快照)全在宿主机目录里,注意宿主机权限与备份加密。
services: 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: trading:
# 交易服务:加购 → 下单 → 付款 → 订单监控,以及 /api/auth/* /api/cart/* # 交易服务:加购 → 下单 → 付款 → 订单监控,以及 /api/auth/* /api/cart/*
image: ${RAKUTEN_TRADING_IMAGE:-git.jerryyan.net/jp/rakuten-trading}:${RAKUTEN_TRADING_TAG:-latest} image: ${RAKUTEN_TRADING_IMAGE:-git.jerryyan.net/jp/rakuten-trading}:${RAKUTEN_TRADING_TAG:-latest}