Files
admin/host-stacks/vds-kzntsv/tandemmebel.compose.yml
vitya 69d3d0dd3f feat(tandemmebel): v3 cutover LIVE — snolla 0.42.1→0.43.2 (aws-sdk v2→v3)
6-й сайт тиража v3 (после on-snolla, kupimknigi, labtools.ru, labtools.pro, emspb).
6/6 v3 сайтов GREEN — тираж v3 ЗАВЕРШЁН.

- Bump: @snollajs/snolla 0.42.1→0.43.2 (apps/web) + resolutions verbatim labtools.ru
  (@aws-sdk/client-s3 3.1005.0 + @smithy chain 5.3.11 — optional determinism) + реген
  yarn.lock (single @smithy/signature-v4@5.3.11 deduped). Commit 9d51c09 в victor/tandemmebel.ru.
  Заодно нёс на live s3.endpoint fix f4ddce6 (→ minio.vds.kzntsv.site), был в master с 2026-07-29.
- Build на VDS: registry.kzntsv.site/tandemmebel:9d51c09, digest d14982c24dc7, 476MB (v2 583MB), EXIT=0.
- Staging :5020 parity-gate GREEN: robots md5 identical, sitemap 184=184 locs IDENTICAL,
  self-consistency 183×200 + 1×404 (/articles parity), Gotham-Pro.css 200 4436B (v3 S3-direct).
- Portainer PUT stack 20 (node in-memory, кириллица compose), env 8/8, pullImage:true, mem_limit 512m. PUT 200.
- Live smoke GREEN: / 200 45742B, /projects 200, sitemap 184, theme 200 4436B. TLS CN не тронут (LE Oct 10).
- Rollback = 8df10ee (v2, жив в registry).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-30 19:00:52 +03:00

68 lines
5.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# tandemmebel — прод-фронт tandemmebel.ru (snolla-приложение, server-side Liquid, node) на vds-kzntsv (89.253.255.94).
#
# STAGING-FIRST. Source-of-truth этого compose — admin-репо; применяется через Portainer
# API/UI (VDS-rule: стеки через Portainer, не ssh+compose).
#
# Модель: монолит @snollajs/snolla (0.42.1) / @snollajs/core (0.24.1) / liquid (0.10.2) / data (0.14.1) — читает БД-контент
# MoreThenCms (mssql.kzntsv.site) + server-side Liquid render. Ассеты из MinIO (minio.kzntsv.site).
# МЕДИА: in-process sharp (resize+data-driven watermark), delivery=serve-bytes, cache=local-variant→
# бакет variant-cache в MinIO. imgproxy ИЗ ПУТИ tandem УБРАН (сырой /imgproxy → 404 норма).
# node-config: NODE_ENV=production → default(dev,gitignored)+production.json+ENV-override.
# КОНТЕНТ+БЛОГ-ПОРТФОЛИО+category сайт, БЕЗ e-commerce каталога.
#
# Образ собирается АДМИНОМ на VDS из victor/tandemmebel.ru/deploy/Dockerfile (build-arg VERDACCIO_TOKEN,
# @snollajs/* из verdaccio.kzntsv.site). Тег = git-sha монорепы tandemmebel.ru (текущий 8df10ee).
#
# Домен: LIVE — tandemmebel.ru / www.tandemmebel.ru (cert LE HTTP-01, SAN оба, issued 2026-07-12).
# Cutover завершён 2026-07-12: DNS reg.ru → 89.253.255.94 подтверждён на ns1/ns2.reg.ru →
# traefik Host-rule staging→боевой (LE-порядок соблюдён), LE-серт issued on first hit.
# In-place bump 2026-07-12: 0.42.0→0.42.1 (order-tag Drop-field fix), completeness-gate 184/184 parity GREEN.
# In-place bump 2026-07-13: 0.42.1→0.42.1 (template-only, sha 0cd9351→8df10ee): remove FB/Twitter/Google+ share
# buttons (extremist-icon compliance), keep VK+OK. Completeness-gate 184/184 parity GREEN, live-smoke 4
# share-block pages vk+ok present / fb/tw/gp=0, TLS-серт не дёрнут. Same snolla 0.42.1 base, only
# apps/web/views/social_buttons.liquid changed (1 file, 12 deletions).
# Предыстория: жил на RUVDS IIS (80.64.31.36) до 2026-07-12.
# План отката = revert DNS → 80.64.31.36 (RUVDS IIS жив, не тронут) ИЛИ PUT стека 20 назад на тег
# 0cd9351 (0.42.1, {% order %} fix) / ed96b18 (0.42.0) / b02ca18 (rollback-теги в registry). Образ 8df10ee — latest.
#
# Runtime egress (наружу из proxy-сети): mssql.kzntsv.site:1433, minio.kzntsv.site:443
# (оригиналы + запись вариантов в bucket variant-cache), smtp.yandex.ru:465. imgproxy НЕ нужен (sharp in-process).
#
# Секреты — env на VDS (Portainer stack env), НЕ в образ, НЕ в git. Значения ${...} инжектит Portainer
# из stack-переменных (переиспользованы verbatim из labtools stack Id 17). Контракт:
# DB_USER DB_PASSWORD IMGPROXY_KEY IMGPROXY_SALT S3_ACCESS_KEY_ID S3_SECRET_ACCESS_KEY SMTP_USER SMTP_PASSWORD
# siteId=78080707-F6E0-4330-BA30-7922354C2CEF — non-secret, в production.json (не env). Culture ru-RU. siteUrl=https://www.tandemmebel.ru
services:
tandemmebel:
container_name: tandemmebel
image: registry.kzntsv.site/tandemmebel:9d51c09 # git-sha victor/tandemmebel.ru master 9d51c09 (snolla 0.43.2 / aws-sdk v3 — v3 cutover 2026-07-30, 6-й сайт тиража; resolutions @aws-sdk/client-s3 3.1005.0 + @smithy chain 5.3.11; заодно нёс на live s3.endpoint fix f4ddce6 → minio.vds.kzntsv.site). rollback-теги 8df10ee (0.42.1 v2, template-only share-buttons) + 0cd9351 (0.42.1) + ed96b18 (0.42.0) в registry.
restart: unless-stopped
mem_limit: 512m # guardrail от runaway: snolla baseline ~100-200M; OOM в контейнере → restart:unless-stopped поднимет. standalone-compose → mem_limit (НЕ deploy.resources — то swarm-only).
environment:
NODE_ENV: production
TZ: Europe/Moscow
# PORT не переопределяем — образ дефолтит 5000 (EXPOSE 5000, healthcheck на $PORT)
# --- runtime-секреты (значения из Portainer stack env; НЕ хранить тут) ---
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
IMGPROXY_KEY: ${IMGPROXY_KEY}
IMGPROXY_SALT: ${IMGPROXY_SALT}
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID}
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY}
SMTP_USER: ${SMTP_USER}
SMTP_PASSWORD: ${SMTP_PASSWORD}
networks:
- proxy
labels:
traefik.enable: "true"
traefik.http.routers.tandemmebel.entrypoints: websecure
# LIVE (cutover 2026-07-12). Rollback = Host(`tandemmebel.vds.kzntsv.site`) + revert DNS → 80.64.31.36.
traefik.http.routers.tandemmebel.rule: Host(`tandemmebel.ru`) || Host(`www.tandemmebel.ru`)
traefik.http.routers.tandemmebel.tls.certresolver: letsEncrypt
traefik.http.services.tandemmebel.loadbalancer.server.port: "5000"
networks:
proxy:
external: true