meta(tasks,wiki): stostayer-web 0.3.23 deploy — task done + runbook nuances (offline-build linux-bins, :9000 port, prod tag)
This commit is contained in:
@@ -20,7 +20,7 @@ updated: 2026-06-17
|
||||
| Reverse-proxy | **Angie** (форк nginx) на `:443`, навешивает **Basic-auth** на сервисные сабдомены |
|
||||
| Registry | `docker.stostayer.ru` (BA те же, что Angie BA) — образы `stostayer-web:<tag>` |
|
||||
| Стек | Portainer **`stostayer-web` Id 16, EndpointId 3**, compose в Portainer-volume `/data/compose/16/docker-compose.yml` |
|
||||
| Прод-тег (2026-06-17) | `0.3.18`. На хосте лежат старые теги `0.3.6…0.3.18` под откат |
|
||||
| Прод-тег (2026-08-13) | `0.3.23`. На хосте лежат старые теги под откат (`0.3.22` и ранее) |
|
||||
| Образ | `packages/web/Dockerfile`: `node:16` → `yarn install` → `yarn build` (nuxt build) → `CMD yarn start`. pm2/`ecosystem.config.js` в проде НЕ используется |
|
||||
|
||||
## Канал деплоя (build здесь → registry → Portainer)
|
||||
@@ -38,6 +38,7 @@ docker build -f packages/web/Dockerfile -t docker.stostayer.ru/stostayer-web:<ta
|
||||
- **`.dockerignore` обязателен** (его нет в репо) — иначе `node_modules`/`.git` улетают в build-контекст. Создать временный: `node_modules **/node_modules .git apps docs build *.zip` и т.п. (на явные `COPY` не влияет).
|
||||
- **Локальная `npmAuthToken: "${VERDACCIO_TOKEN}"` в `.yarnrc.yml`** (рабочая модификация, не в коммите) **ломает build**: yarn внутри образа падает `Usage Error: Environment variable not found (VERDACCIO_TOKEN)`. Убрать эту строку из build-копии (потом вернуть).
|
||||
- **Offline против `.yarn/cache`:** добавить `enableNetwork: false` в `.yarnrc.yml` — depы пекутся из cache, verdaccio-токен в образе не нужен. (Cache содержит third-party зипы; их версии ESM-миграция не меняла, так что cache от master-tip обычно покрывает и более старые коммиты.)
|
||||
- **⚠️ Offline НЕ всегда проходит (2026-08-13, 0.3.23):** в `.yarn/cache` с Windows-хоста НЕТ linux-бинарей `@esbuild/linux-x64` и `@rollup/rollup-linux-x64-gnu` → yarn с `enableNetwork:false` падает, а с сетью — `YN0041 Invalid authentication (as an anonymous user)` (verdaccio требует токен). Рабочий обход: временно вернуть `npmAuthToken: "${VERDACCIO_TOKEN}"` в build-копию `.yarnrc.yml` + временно добавить в `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 linux-зипа в `.yarn/cache`.
|
||||
|
||||
### 2. Push в registry
|
||||
|
||||
@@ -58,7 +59,7 @@ Portainer published **только в docker-сеть** (на host-localhost е
|
||||
# SSH (PuTTY plink; host-key уже известен)
|
||||
plink -ssh -batch -hostkey SHA256:6Zk14J/UakVqBYm/fMPFrL3gosdBdyZOKZnbA0GVnD0 \
|
||||
-P 20435 -pw '<ssh_pass>' victor@91.222.236.225 "bash -s" <<'EOF'
|
||||
base=http://172.18.0.2:9000 # docker inspect portainer → его IP в сети bridge
|
||||
base=http://172.18.0.2:9000 # docker inspect portainer → IP в bridge; ПОРТ :9000 обязателен (голый IP → curl на :80 → HTTP=000)
|
||||
JWT=$(curl -s $base/api/auth -H 'Content-Type: application/json' \
|
||||
-d '{"username":"victor","password":"<app_pass>"}' | jq -r .jwt)
|
||||
FILE=$(curl -s -H "Authorization: Bearer $JWT" $base/api/stacks/16/file | jq -r .StackFileContent)
|
||||
@@ -113,6 +114,10 @@ grep -c "<expected-text>" /tmp/v.html
|
||||
|
||||
> Образ `0.3.19` (краш-лупный) лежит в `docker.stostayer.ru` — **НЕ деплоить**. Оставлен в registry по решению vitya (2026-06-17), не удаляем.
|
||||
|
||||
## ✅ Деплой 0.3.23 (2026-08-13)
|
||||
|
||||
Запрос их прогера (письмо `.claude-inbox/2026-08-13T08-43-41Z-stostayer-new.md`): calculator-баннер про цены при покупке запчастей в компании Стайер (exactPrices>0) + фикс краша (snolla `loadCity`/`loadSite` в asyncData) + стек-фикс легаси (явные vue/vuex/vue-router/mariadb deps, `nmHoistingLimits: workspaces`). Коммиты `e5f7bd6`+`7e51cbf`+`d49b4bb` (master-tip). Собран (см. гоча offline выше), запушен **1 попыткой** (слои mostly already-exists → egress мал, бана нет), стек 16 передеплоен 0.3.22→0.3.23 (`pullImage:true`, env re-supply — у стека env пуст). Verify зелёный: Focus II → 200 + баннер, регресс `/`+ремонтная 200, Focus IV (exactPrices=0) без баннера + алерт «уточняйте у мастеров». Прод до этого был на **0.3.22** (0.3.21/0.3.22 собраны 24.07; деплой 0.3.22 шёл через pscp+`sudo docker load` без push в :443).
|
||||
|
||||
## Связи
|
||||
|
||||
- [[portainer-stack-management-vds]] — родственный паттерн (наш VDS), оттуда PowerShell-кодировочные гочи и redeploy-рецепт.
|
||||
|
||||
Reference in New Issue
Block a user