feat(docker): add scraping API compose service
This commit is contained in:
@@ -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
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user