97 lines
4.1 KiB
YAML
97 lines
4.1 KiB
YAML
# sched-workers — HTTP-воркеры пайплайнов клиентов @apilki (VDS, рядом с ядром sched).
|
||
# Ядро sched: стек 28 (sched.compose.yml). Воркеры — отдельный стек в той же сети proxy,
|
||
# sched ходит к ним по имени сервиса из sched.tasks.json.
|
||
# Моки: verdaccio.kzntsv.site (npm), git.kzntsv.site (Gitea = мок-GitHub, орга apilki),
|
||
# ntfy (VDS-сервис в proxy), unisender-mock (локальный мок писем в этом стеке).
|
||
# Deploy: Portainer-managed (см. portainer-stack-management-vds). Env через Portainer (не env_file).
|
||
# Source-of-truth: host-stacks/vds-kzntsv/sched-workers.compose.yml.
|
||
|
||
services:
|
||
ym-client-builder:
|
||
image: registry.kzntsv.site/ym-client-builder:0.1.2
|
||
container_name: ym-client-builder
|
||
restart: unless-stopped
|
||
mem_limit: 512m
|
||
networks:
|
||
- proxy
|
||
environment:
|
||
PORT: "8080"
|
||
SCHED_API_KEY: ${SCHED_API_KEY}
|
||
UNISENDER_API_KEY: mock-key
|
||
UNISENDER_FROM: noreply@snolla.com
|
||
NPM_TOKEN: ${NPM_TOKEN}
|
||
GITHUB_TOKEN: ${GITHUB_TOKEN}
|
||
# мок-publish: verdaccio (npm) + Gitea (репо/релизы) — без выхода в npmjs/github.com
|
||
PUBLISH_REGISTRY: ${PUBLISH_REGISTRY}
|
||
PUBLISH_REMOTE_BASE: ${PUBLISH_REMOTE_BASE}
|
||
PUBLISH_GH_API_BASE: ${PUBLISH_GH_API_BASE}
|
||
volumes:
|
||
- /opt/stacks/sched-workers/data-ym:/app/data
|
||
|
||
ozon-seller-builder:
|
||
image: registry.kzntsv.site/ozon-seller-builder:0.1.0
|
||
container_name: ozon-seller-builder
|
||
restart: unless-stopped
|
||
# tsc-сборка клиента ~700MB пик (openapi-generator + компилятор) — 512m OOM
|
||
mem_limit: 1g
|
||
networks:
|
||
- proxy
|
||
environment:
|
||
WORKER_PORT: "8080"
|
||
SCHED_API_KEY: ${SCHED_API_KEY}
|
||
# внутренний крон не нужен — расписанием рулит sched. 31 февраля не наступает никогда.
|
||
CRON_SCHEDULE: "0 0 29 2 *"
|
||
# персистентность state/output на хосте (bind-mount /app/data)
|
||
STATE_FILE: /app/data/state.json
|
||
OUTPUT_DIR: /app/data/output/typescript
|
||
# безопасный дефолт: DRY_RUN=1. Реальный мок-publish — только явным data.dryRun=false в таске.
|
||
DRY_RUN: "1"
|
||
BROWSER_CDP_URL: http://browser:9222
|
||
NTFY_URL: http://ntfy
|
||
NTFY_TOPIC: ozon-seller-pipeline
|
||
UNISENDER_API_KEY: mock-key
|
||
UNISENDER_SENDER_EMAIL: noreply@snolla.com
|
||
UNISENDER_SENDER_NAME: sched-pipeline
|
||
UNISENDER_ENDPOINT: http://unisender-mock:8080/ru/transactional/api/v1/email/send.json
|
||
NOTIFY_EMAIL_TO: ${NOTIFY_EMAIL_TO}
|
||
GH_TOKEN: ${GITHUB_TOKEN}
|
||
NPM_TOKEN: ${NPM_TOKEN}
|
||
# мок-publish: verdaccio (npm) + Gitea (репо/релизы) — без выхода в npmjs/github.com
|
||
PUBLISH_REGISTRY: ${PUBLISH_REGISTRY}
|
||
PUBLISH_REMOTE_BASE: ${PUBLISH_REMOTE_BASE}
|
||
PUBLISH_GH_API_BASE: ${PUBLISH_GH_API_BASE}
|
||
volumes:
|
||
- /opt/stacks/sched-workers/data-ozon:/app/data
|
||
# снапшот спеки из репо (fetch антиботом не ходим — dry-run от ручного снапшота)
|
||
- /opt/stacks/sched-workers/data-ozon-openapi:/app/openapi
|
||
depends_on:
|
||
- browser
|
||
|
||
# headless Chrome + CDP :9222 (для антибот-fetch стадий ozon), socat наружу 0.0.0.0:9222
|
||
browser:
|
||
image: registry.kzntsv.site/browser-cdp:0.1.0
|
||
container_name: browser-cdp
|
||
shm_size: "1gb"
|
||
restart: unless-stopped
|
||
mem_limit: 512m
|
||
networks:
|
||
- proxy
|
||
|
||
# мок Unisender Go: письма в /opt/stacks/sched-workers/data-mail, реальных отправок нет
|
||
unisender-mock:
|
||
image: registry.kzntsv.site/unisender-mock:0.1.0
|
||
container_name: unisender-mock
|
||
restart: unless-stopped
|
||
mem_limit: 128m
|
||
environment:
|
||
PORT: "8080"
|
||
MAIL_DIR: /mail
|
||
volumes:
|
||
- /opt/stacks/sched-workers/data-mail:/mail
|
||
networks:
|
||
- proxy
|
||
|
||
networks:
|
||
proxy:
|
||
external: true
|