Перейти до вмісту

Оновлення self-host-інсталяції

Для інсталяцій, поставлених із Docker self-host bundle релізу.

  1. Прочитай нотатки до релізу на GitHub Releases: там сказано, чи є нові міграції і нові змінні .env.
  2. Зроби копії бази і файлів.
  3. Збережи поточний .env.
  4. Перевір, що томи на місці:
Terminal window
docker volume ls --filter name=projectk

Дані живуть в іменованих томах Docker; оновлення образів їх не чіпає.

Ніколи не виконуй це, якщо не хочеш видалити всі дані інсталяції:

Terminal window
docker compose down -v

Оновлення в тій самій теці bundle

Section titled “Оновлення в тій самій теці bundle”

У .env постав цільову версію:

PROJECTK_VERSION=<версія>

Витягни нові образи з GHCR і перезапусти:

Terminal window
docker compose pull
docker compose up -d

API застосовує міграції EF Core на старті. Великі рефакторинги (як 0.20.0 з переходом на членства) роблять це довше за звичайне — дай API хвилину і перевір docker compose logs -f projectk-api.

Compose тягне образи за PROJECTK_VERSION:

ghcr.io/lileyka-app/projectk-api:${PROJECTK_VERSION}
ghcr.io/lileyka-app/projectk-web:${PROJECTK_VERSION}

До переїзду в організацію lileyka-app образи лежали в ghcr.io/iamavasya/…. Якщо в твоєму compose.yml досі стара адреса, заміни iamavasya на lileyka-app. Нові версії ще якийсь час дублюються й за старою адресою, але з часом ця копія зникне.

Для живих інсталяцій — явна версія (наприклад 1.1.9). Тег beta рухається до найновішої бети і годиться лише тим, хто свідомо хоче йти за нею.

  1. Завантаж новий projectk-<версія>-docker-selfhost.
  2. Розпакуй у нову теку.
  3. Скопіюй туди свій .env.
  4. Переглянь .env.example — чи не зʼявились нові змінні. У 1.1.x додались, зокрема, PROJECTK_EMAIL_* (пошта), PROJECTK_TIME_ZONE, PROJECTK_KURIN_NUMBER_MAX і PROJECTK_WEBPUSH_* (сповіщення на телефон); після 1.2.1 — PROJECTK_DEFAULT_KRAI (край, до якого потрапляє новий курінь, типово ua) і PROJECTK_TELEMETRY (щоденний анонімний пінг) — див. Self-host.
  5. Виконай:
Terminal window
docker compose pull
docker compose up -d

Телеметрія в старому .env. Compose читає PROJECTK_TELEMETRY як ${PROJECTK_TELEMETRY-true}: якщо рядка в .env немає зовсім, пінг увімкнений. Старий .env, перенесений без змін, якраз такий. Не хочеш пінгу — допиши PROJECTK_TELEMETRY=false до docker compose up -d.

Номери телефонів після оновлення

Section titled “Номери телефонів після оновлення”

Міграція NormalizePhoneNumbers зводить усі збережені номери до одного вигляду — +, код країни й цифри (+380501234567). Вона переписує поле телефону в Members, WaitlistEntries і AspNetUsers:

  • пробіли, дефіси, дужки й крапки прибираються;
  • українські номери без «+» дістають його: 0501234567, 380501234567 і 00380… стають +380501234567;
  • заглушка з одних нулів, яку колись писала активація, стає порожньою;
  • решта лишається як була — її треба виправити руками в картці людини.

Телефонів батьків у картці міграція не чіпає: такий номер перевіряється, лише коли його змінюють. Зворотного кроку немає, але нормалізовані номери читає й попередня версія.

Bundle використовує явні назви томів projectk-sql-data і projectk-azurite-data, тож дані лишаються привʼязаними до інсталяції навіть при зміні назви теки.

Якщо інсталяція старіша за 0.14.2-beta

Section titled “Якщо інсталяція старіша за 0.14.2-beta”

Ранні bundle давали томам назви з префіксом теки, наприклад projectk-0.14.1-beta-docker-selfhost_projectk-sql-data. Перед запуском нової версії з нової теки перевір реальні назви томів (docker volume ls --filter name=projectk). Якщо дані в томах із префіксом — зроби копію зі старої теки і віднови її в нові томи projectk-sql-data та projectk-azurite-data.

Перевір після оновлення

Section titled “Перевір після оновлення”
  1. docker compose ps — усі чотири контейнери running (healthy).

  2. Здоровʼя API і його версія:

    Terminal window
    docker compose exec projectk-api curl -fsS http://localhost:8080/health

    У відповіді "status":"ready" і нова версія.

  3. Увійди в Лілейку й відкрий «Про Лілейку» внизу бічного меню: там версія застосунку й API.

  4. Якщо щось не так — docker compose logs -f projectk-api.

Відкат безпечний лише коли схема бази сумісна з попередньою версією. Після невдалої міграції чи великих змін — відновлюйся з копії, а не відкочуй образ.