SHA256
Перевести deploy и PostgreSQL схемы на актуальное состояние
This commit is contained in:
@@ -2,7 +2,11 @@
|
||||
|
||||
Этот документ фиксирует целевой стандарт PostgreSQL, который должен использоваться на всех серверных контурах SHiNE после ухода от SQLite.
|
||||
|
||||
Пока это не текущий production-state, а согласованная целевая схема, под которую можно писать миграции, deploy-скрипты и server-конфиги.
|
||||
Важно:
|
||||
|
||||
- целевой стандарт для SHiNE: `PostgreSQL 18.x`;
|
||||
- текущий факт на production `shineup.me` и `server2.shineup.me` на дату `2026-07-28`: `PostgreSQL 18.4`;
|
||||
- текущий факт на test/devnet `t1` / `t2` / `t3` / `t4` на дату `2026-07-28`: `PostgreSQL 18.4`.
|
||||
|
||||
## Цель
|
||||
|
||||
@@ -71,19 +75,19 @@ PostgreSQL не должна быть доступна из интернета.
|
||||
Production:
|
||||
|
||||
```text
|
||||
/home/player/SHiNE/postgres/shine_server_db
|
||||
/home/player/SHiNE/postgres/data
|
||||
```
|
||||
|
||||
Test/devnet:
|
||||
|
||||
```text
|
||||
/home/player/tX/postgres/shine_server_db
|
||||
/home/player/tX/postgres/data
|
||||
```
|
||||
|
||||
Если на одном сервере появится несколько баз SHiNE-сервисов, раскладывать их по отдельным каталогам:
|
||||
|
||||
```text
|
||||
/home/player/SHiNE/postgres/shine_server_db
|
||||
/home/player/SHiNE/postgres/data
|
||||
/home/player/SHiNE/postgres/analytics_db
|
||||
/home/player/SHiNE/postgres/other_service_db
|
||||
```
|
||||
@@ -142,11 +146,10 @@ services:
|
||||
POSTGRES_DB: ${POSTGRES_SUPERUSER_DB}
|
||||
POSTGRES_USER: ${POSTGRES_SUPERUSER}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_SUPERUSER_PASSWORD}
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
ports:
|
||||
- "127.0.0.1:5432:5432"
|
||||
volumes:
|
||||
- ${SHINE_POSTGRES_DATA_DIR}:/var/lib/postgresql/data
|
||||
- ${SHINE_POSTGRES_DATA_DIR}:/var/lib/postgresql
|
||||
- ./initdb:/docker-entrypoint-initdb.d:ro
|
||||
healthcheck:
|
||||
test:
|
||||
@@ -167,15 +170,21 @@ POSTGRES_SUPERUSER_PASSWORD=change_me
|
||||
SHINE_APP_DB=shine_server_db
|
||||
SHINE_APP_USER=shine_server
|
||||
SHINE_APP_PASSWORD=change_me_too
|
||||
SHINE_POSTGRES_DATA_DIR=/home/player/SHiNE/postgres/shine_server_db
|
||||
SHINE_POSTGRES_DATA_DIR=/home/player/SHiNE/postgres/data
|
||||
```
|
||||
|
||||
Для test/devnet путь адаптировать под конкретный контур:
|
||||
|
||||
```dotenv
|
||||
SHINE_POSTGRES_DATA_DIR=/home/player/t2/postgres/shine_server_db
|
||||
SHINE_POSTGRES_DATA_DIR=/home/player/t2/postgres/data
|
||||
```
|
||||
|
||||
Важно для `postgres:18+`:
|
||||
|
||||
- bind-mount нужно делать на `/var/lib/postgresql`, а не на `/var/lib/postgresql/data`;
|
||||
- если смонтировать старый путь `/var/lib/postgresql/data`, контейнер `postgres:18` может уйти в restart-loop ещё до инициализации БД;
|
||||
- после первого старта PostgreSQL сам создаст внутри host-каталога структуру вида `18/docker`.
|
||||
|
||||
## Подключение приложения
|
||||
|
||||
SHiNE server должен подключаться именно к:
|
||||
@@ -203,11 +212,12 @@ SHiNE server должен подключаться именно к:
|
||||
|
||||
## Для будущей миграции SHiNE
|
||||
|
||||
При переводе SHiNE server с SQLite на PostgreSQL считать обязательным:
|
||||
При переводе нового серверного контура SHiNE с SQLite на PostgreSQL считать обязательным:
|
||||
|
||||
- сначала поднять PostgreSQL по этому стандарту;
|
||||
- затем добавить серверные конфиги подключения;
|
||||
- затем прогнать миграции схемы;
|
||||
- только потом переключать runtime приложения на PostgreSQL.
|
||||
|
||||
До фактического rollout на конкретный сервер эта БД может ещё отсутствовать. Этот документ описывает не текущее наличие БД, а обязательный целевой стандарт для всех серверов SHiNE.
|
||||
Для новых серверов этот документ использовать как обязательный шаблон.
|
||||
На `2026-07-28` и production, и test/devnet контуры SHiNE уже работают на `PostgreSQL 18.4`.
|
||||
|
||||
Reference in New Issue
Block a user