Files
admin/host-stacks/vds-kzntsv/pilonuxt.compose.yml
vitya 027cc79d23 deploy(pilonuxt): GSC Product name fix LIVE on prod — c4e34d4
Rebuilt pilonuxt from monorepo master c4e34d4 (workspace Dockerfile,
sharp @img baked, live VERDACCIO_TOKEN). Canon delivery: build here
(425MB) -> docker save | ssh vds load -> push FROM vds -> Portainer
stack 16 pullImage:true (tag 6c6d52d->c4e34d4, fresh registry pull).

Acceptance MET (in-container smoke on VDS + prod smoke via curl
--resolve, bypassing LAN-DNS): 3 product pages 200, leading
<meta itemprop="name"> inside schema.org/Product = product title
(was only Brand 'Пилорама 98' before). 10 nav routes 200, no regression.
Compose SOT -> c4e34d4. Inbox victor/pilorama98.ru sent.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 09:56:16 +03:00

50 lines
2.8 KiB
YAML
Raw Permalink 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.
# pilonuxt — prod-фронт ПИЛОРАМА98 (Nuxt 4 / Nitro node-server) на vds-kzntsv (89.253.255.94).
#
# Деплой: Portainer-стек за Traefik. Source-of-truth этого compose — admin-репо;
# применяется через Portainer API/UI (VDS-rule: стеки через Portainer, не ssh+compose).
#
# Образ собирается на workstation из МОНОРЕПЫ victor/pilorama98.ru (workspace-build:
# контекст = корень монорепы, -f apps/web/Dockerfile, build secret VERDACCIO_TOKEN живой JWT).
# runner несёт @img/sharp-* нативы (sharp приехал с snolla 0.17, imageResize). Тег = git-sha
# монорепы. Push: с дома .output-слой ловит traefik-499 → docker save | ssh vds 'docker load'
# + docker push С VDS. См. apps/web/.wiki/concepts/docker-deploy.md.
#
# Домен: на smoke-фазе — временный поддомен pilonuxt.vds.kzntsv.site (под wildcard
# *.vds.kzntsv.site, cert LE HTTP-01 авто). Cutover www.pilorama98.ru — отдельным
# шагом после зелёного smoke (правка rule + DNS reg.ru).
#
# Runtime egress (наружу из proxy-сети, по умолчанию открыт):
# mssql.kzntsv.site:1433 (живые CMS-запросы, cacheTimeout=0) — обязателен;
# smtp.yandex.ru:465 (письма форм contacts/checkout);
# собственный origin https://pilonuxt.vds.kzntsv.site (SSR self-call на /snolla).
#
# Секреты (MSSQL/SMTP/imgproxy key+salt/siteId) ЗАПЕЧЕНЫ в config/default.json образа
# (решение vitya — образ только в приватном registry). Env-override не настраивали.
services:
pilonuxt:
container_name: pilonuxt
image: registry.kzntsv.site/pilonuxt:c4e34d4
restart: unless-stopped
environment:
NODE_ENV: production
TZ: Europe/Moscow
NITRO_HOST: 0.0.0.0
NITRO_PORT: "3000"
# CUTOVER 2026-06-15: боевой домен www.pilorama98.ru — аналитика ВКЛ
# (дефолт GTM-MNNXFJ6, env не задаём). На smoke-поддомене гасили `""`.
networks:
- proxy
labels:
traefik.enable: "true"
traefik.http.routers.pilonuxt.entrypoints: websecure
# Боевые хосты pilorama98 (DNS → 89.253.255.94, cutover с RUVDS IIS) +
# pilonuxt.vds.kzntsv.site оставлен для прямого smoke/диагностики.
traefik.http.routers.pilonuxt.rule: Host(`www.pilorama98.ru`) || Host(`pilorama98.ru`) || Host(`pilonuxt.vds.kzntsv.site`)
traefik.http.routers.pilonuxt.tls.certresolver: letsEncrypt
traefik.http.services.pilonuxt.loadbalancer.server.port: "3000"
networks:
proxy:
external: true