# stostayer-web-deploy-0-3-23 **Status:** done 🟢 **Branch:** master (victor/stostayer.new) **Where I stopped:** ДЕПЛОЙ ЗАВЕРШЁН 2026-08-13. Образ `docker.stostayer.ru/stostayer-web:0.3.23` (коммиты `e5f7bd6`+`7e51cbf`+`d49b4bb`, master-tip) собран, запушен (1 попытка, слои mostly already-exists → egress мал, бана нет), стек Portainer 16 передеплоен (0.3.22→0.3.23, HTTP=200, env re-supplied `[]` — у стека env и так пуст). Контейнер Up, RestartCount=0, старт чистый (`Server listening :3000`). Verify с хоста: calculator Focus II → 200 + баннер «актуальны при приобретении запасных частей (материалов) в компании Стайер» (grep=1); регресс `/` и `/remont/to/auto/ford/focus/focus-ii-...` → 200; Focus IV (exactPrices=0) → баннера НЕТ, алерт «уточняйте у наших мастеров» (grep=1) — ровно по письму. Откат: PUT стека 16 на `0.3.22` (тег на хосте), RTO ~30-60с. ## Goal Раскатать на прод www.stostayer.ru запрос их прогера (письмо `.agents/inbox/2026-08-13T08-43-41Z-stostayer-new.md`): calculator-баннер про цены при покупке запчастей + фикс краша (snolla loadCity/loadSite) + стек-фикс легаси сборки (явные vue/vuex/vue-router/mariadb deps, nmHoistingLimits). ## Нюансы деплоя (важно для следующего раза) - **Offline-build (`enableNetwork: false`) НЕ прошёл**: в `.yarn/cache` нет linux-бинарей `@esbuild/linux-x64@0.21.5` и `@rollup/rollup-linux-x64-gnu@4.62.3` (кэш с Windows-хоста). Yarn падает `YN0041 Invalid authentication (as an anonymous user)` — verdaccio требует токен. - **Фикс**: временно в build-копию `.yarnrc.yml` вернуть строку `npmAuthToken: "${VERDACCIO_TOKEN}"` (перед build удалить/вернуть), в `packages/web/Dockerfile` временно добавить `ARG VERDACCIO_TOKEN` + `ENV VERDACCIO_TOKEN=$VERDACCIO_TOKEN` перед `RUN yarn install`, собрать `docker build --build-arg VERDACCIO_TOKEN="$VERDACCIO_TOKEN"`. После build — `git checkout -- .yarnrc.yml packages/web/Dockerfile`. (Безопаснее: докинуть 2 зипа в cache.) - **Portainer API с хоста**: `base=http://:9000` — порт обязателен (голый IP → curl на :80 → HTTP=000). IP портейнера: `docker inspect portainer --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'` → 172.18.0.2. - Прод до этого деплоя был на **0.3.22** (не 0.3.20 как писал ранбук; вики отставала на 2 деплоя: 0.3.21/0.3.22 собраны 24.07). - Деплой 0.3.22 (24.07) делался через pscp+`sudo docker load` (БЕЗ push в :443 — бан-риск). Мой push 0.3.23 прошёл штатно — слои переиспользовались. ## Decisions log - 2026-08-13: offline-build vs сеть — выбран сетевой путь с временным токеном (cache-пополнение linux-бинарей сложнее, чем ARG/ENV на раз). - 2026-08-13: push в registry выполнен (в отличие от деплоя 0.3.22 через pscp+load) — 1 попытка, слои already-exists, бан-риска нет. ## Completed steps - [x] Письмо прогера прочитано (инбокс, доставка pi-расширением inbox-monitor). - [x] Build 0.3.23 (master e5f7bd6), restore .yarnrc.yml/Dockerfile. - [x] Push 0.3.23 → docker.stostayer.ru (1 попытка, digest sha256:c6650744e198...). - [x] Redeploy Portainer stack 16 (PUT, pullImage:true, env re-supply). - [x] Verify: баннер Focus II, регресс `/`+ремонтная, Focus IV без баннера; логи чистые.