Files
admin/host-stacks/vds-kzntsv/tandemmebel.compose.yml

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.vds.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.vds.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