deploy(tandemmebel): staging GREEN on vds-kzntsv — stack 20, image 0facb35, cutover held on operator
Финал тиража tandemmebel. Ops-часть до cutover, всё зелёное. - Образ registry.kzntsv.site/tandemmebel:0facb35 (snolla@0.32.2/core@0.13.8, digest 464d2f22, watermark-override в пине) собран НА VDS (обход traefik-499). - Стек Portainer tandemmebel Id 20 (ep1), staging-rule Host(tandemmebel.vds.kzntsv.site), env verbatim из labtools стека 17 (8/8). Контейнер healthy, MSSQL+S3, listening :5000. Source-of-truth compose: host-stacks/vds-kzntsv/tandemmebel.compose.yml. - PURGE imgproxy-nginx кэша (books-vds стек 29) — stale-clean featured ушли, featured отдаёт 27820B вотермарк без cache-bust. Staging-smoke с VDS GREEN: status-parity 10/10; sitemap staging index (184) ⊇ prod (172) prod-only=0 + 12 /projects/categories/* (benign#3); trailing 301/301; blog-post 200 +3.5KB (benign#2 imgproxy vs /galleries/ 26/26); 2012-посты 31/31; theme 21/22 MD5-OK. Находка (не блокер): prod Gotham-Pro.css=0B пустой, staging=4436B корректный → cutover чинит латентный прод-баг шрифта. HOLD cutover — DNS-флип gated оператором (reg.ru → 89.253.255.94). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
59
host-stacks/vds-kzntsv/tandemmebel.compose.yml
Normal file
59
host-stacks/vds-kzntsv/tandemmebel.compose.yml
Normal file
@@ -0,0 +1,59 @@
|
||||
# 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.32.2) / @snollajs/core (0.13.8) — читает БД-контент
|
||||
# MoreThenCms (mssql.kzntsv.site) + server-side Liquid render. Ассеты из MinIO (minio.kzntsv.site)
|
||||
# через imgproxy (imgproxy.kzntsv.site). node-config: NODE_ENV=production → default(dev,gitignored)+
|
||||
# production.json+ENV-override. КОНТЕНТ+БЛОГ-ПОРТФОЛИО+category сайт, БЕЗ e-commerce каталога.
|
||||
# production.json содержит imgproxy.watermark override {size:post-featured, option:wm:0.5:ce:0:0:0} — в образе.
|
||||
#
|
||||
# Образ собирается АДМИНОМ на VDS из victor/tandemmebel.ru/deploy/Dockerfile (build-arg VERDACCIO_TOKEN,
|
||||
# @snollajs/* из verdaccio.kzntsv.site). Тег = git-sha монорепы tandemmebel.ru (0facb35).
|
||||
#
|
||||
# Домен: STAGING — tandemmebel.vds.kzntsv.site (под wildcard *.vds.kzntsv.site, cert LE HTTP-01 авто).
|
||||
# Cutover live tandemmebel.ru/www.tandemmebel.ru — ОТДЕЛЬНЫЙ gated шаг: бой живой на RUVDS IIS, НЕ выводить.
|
||||
# DNS переключает ОПЕРАТОР. План отката = revert DNS → 80.64.31.36.
|
||||
# ⚠️ Host-правило боевых хостов добавлять ТОЛЬКО ПОСЛЕ flip DNS (иначе LE HTTP-01 упадёт на RUVDS → rate-limit).
|
||||
#
|
||||
# Runtime egress (наружу из proxy-сети): mssql.kzntsv.site:1433, minio.kzntsv.site:443,
|
||||
# imgproxy.kzntsv.site:443, smtp.yandex.ru:465.
|
||||
#
|
||||
# Секреты — 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:0facb35 # git-sha victor/tandemmebel.ru master
|
||||
restart: unless-stopped
|
||||
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
|
||||
# STAGING-RULE. Cutover: после flip DNS сменить на Host(`tandemmebel.ru`) || Host(`www.tandemmebel.ru`)
|
||||
# и убрать staging-хост. RUVDS IIS 80.64.31.36 — rollback, не тронут.
|
||||
traefik.http.routers.tandemmebel.rule: Host(`tandemmebel.vds.kzntsv.site`)
|
||||
traefik.http.routers.tandemmebel.tls.certresolver: letsEncrypt
|
||||
traefik.http.services.tandemmebel.loadbalancer.server.port: "5000"
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
Reference in New Issue
Block a user