У админки теперь постоянные порты, которые не спорят с Portainer
Тестовый контур слушает 8100, прод — 8101 на хосте VPS (8000 занят Portainer). Адрес привязки вынесен в ADMIN_BIND_IP: по умолчанию только loopback, а для nginx-proxy-manager ставится 172.17.0.1, чтобы контейнер NPM мог достучаться до админки, но порт не оказался в интернете. Примеры окружений и DEPLOY обновлены.
This commit is contained in:
parent
8fb7fe5dd9
commit
d695f1991f
|
|
@ -49,3 +49,4 @@ TEMPLATE_CACHE_TTL=45
|
||||||
|
|
||||||
# Админка (FastAPI, Блок 4). Порт на loopback хоста для docker compose.
|
# Админка (FastAPI, Блок 4). Порт на loopback хоста для docker compose.
|
||||||
ADMIN_HTTP_PORT=8000
|
ADMIN_HTTP_PORT=8000
|
||||||
|
ADMIN_BIND_IP=127.0.0.1
|
||||||
|
|
|
||||||
14
DEPLOY.md
14
DEPLOY.md
|
|
@ -21,7 +21,9 @@ cp env/test.env.example env/test.env
|
||||||
|
|
||||||
Порт ClickHouse на хосте (`CLICKHOUSE_HTTP_PORT`) у контуров должен различаться:
|
Порт ClickHouse на хосте (`CLICKHOUSE_HTTP_PORT`) у контуров должен различаться:
|
||||||
`prod` — `8123`, `test` — `8124` (иначе контейнеры конфликтуют на одной VPS).
|
`prod` — `8123`, `test` — `8124` (иначе контейнеры конфликтуют на одной VPS).
|
||||||
Порт админки (`ADMIN_HTTP_PORT`) — так же: `prod` — `8000`, `test` — `8001`.
|
Порт админки (`ADMIN_HTTP_PORT`) — так же: `prod` — `8101`, `test` — `8100`
|
||||||
|
(8000 на VPS занят Portainer). `ADMIN_BIND_IP` по умолчанию `127.0.0.1`; чтобы
|
||||||
|
nginx-proxy-manager (контейнер) видел админку, ставьте `172.17.0.1`.
|
||||||
|
|
||||||
## 3. Логин в registry (если пакет приватный)
|
## 3. Логин в registry (если пакет приватный)
|
||||||
|
|
||||||
|
|
@ -84,13 +86,15 @@ docker compose -p test --env-file env/test.env -f docker-compose.prod.yml exec -
|
||||||
## Админка (FastAPI)
|
## Админка (FastAPI)
|
||||||
|
|
||||||
Сервис `admin` — отдельный образ `mpakobecex/dispelevilbot-admin`, общий пакет `common`.
|
Сервис `admin` — отдельный образ `mpakobecex/dispelevilbot-admin`, общий пакет `common`.
|
||||||
Наружу пока **не публикуется**: только loopback хоста (`127.0.0.1:${ADMIN_HTTP_PORT}`).
|
Наружу пока **не публикуется**: по умолчанию только loopback хоста
|
||||||
Домен и TLS появятся вместе с входом через Telegram (Блоки 2.4/4.2).
|
(`127.0.0.1:${ADMIN_HTTP_PORT}`). Для nginx-proxy-manager (он в контейнере) задайте
|
||||||
|
`ADMIN_BIND_IP=172.17.0.1` и указывайте в NPM цель `172.17.0.1:8100` (test) /
|
||||||
|
`172.17.0.1:8101` (prod). Домен и TLS — Блок 4.2.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# проверка живости
|
# проверка живости
|
||||||
curl -s http://127.0.0.1:8001/healthz # test
|
curl -s http://127.0.0.1:8100/healthz # test
|
||||||
curl -s http://127.0.0.1:8000/healthz # prod
|
curl -s http://127.0.0.1:8101/healthz # prod
|
||||||
```
|
```
|
||||||
|
|
||||||
Локально без Docker: `pip install -r requirements-admin.txt && python -m admin`
|
Локально без Docker: `pip install -r requirements-admin.txt && python -m admin`
|
||||||
|
|
|
||||||
|
|
@ -92,8 +92,9 @@ docker compose up --build
|
||||||
```
|
```
|
||||||
|
|
||||||
CI собирает два образа: `dispelevilbot-bot` и `dispelevilbot-admin`. Админка в compose
|
CI собирает два образа: `dispelevilbot-bot` и `dispelevilbot-admin`. Админка в compose
|
||||||
публикуется только на loopback (`127.0.0.1:${ADMIN_HTTP_PORT}`), наружу выйдет вместе
|
по умолчанию публикуется только на loopback (`127.0.0.1:${ADMIN_HTTP_PORT}`, test 8100 /
|
||||||
с доменом и TLS (Блок 2.4/4.2).
|
prod 8101); для nginx-proxy-manager задаётся `ADMIN_BIND_IP=172.17.0.1`, наружу выйдет
|
||||||
|
вместе с доменом и TLS (Блок 4.2).
|
||||||
|
|
||||||
Прод/test-контуры — один `docker-compose.prod.yml`, разделяются Compose-проектом и env-файлом:
|
Прод/test-контуры — один `docker-compose.prod.yml`, разделяются Compose-проектом и env-файлом:
|
||||||
|
|
||||||
|
|
@ -126,7 +127,7 @@ make backup E=test # на домашнем сервере: ./scripts/clickho
|
||||||
|
|
||||||
## Версионирование
|
## Версионирование
|
||||||
|
|
||||||
- Единый источник версии — `common/version.py` (`__version__`), текущая — `0.4.3`.
|
- Единый источник версии — `common/version.py` (`__version__`), текущая — `0.4.4`.
|
||||||
- Схема — SemVer-подобная (`MAJOR.MINOR.PATCH`); git-тег = `v` + версия (`v0.1`).
|
- Схема — SemVer-подобная (`MAJOR.MINOR.PATCH`); git-тег = `v` + версия (`v0.1`).
|
||||||
- Docker-образы тегируются версией (Блок 2), события ClickHouse получают `bot_version` (Блок 3).
|
- Docker-образы тегируются версией (Блок 2), события ClickHouse получают `bot_version` (Блок 3).
|
||||||
- Выпуск: изменить `common/version.py` → коммит → аннотированный тег `vX.Y` → `git push --tags`.
|
- Выпуск: изменить `common/version.py` → коммит → аннотированный тег `vX.Y` → `git push --tags`.
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,4 @@
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
__version__ = "0.4.3"
|
__version__ = "0.4.4"
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,9 @@ services:
|
||||||
ADMIN_HOST: 0.0.0.0
|
ADMIN_HOST: 0.0.0.0
|
||||||
ADMIN_PORT: "8000"
|
ADMIN_PORT: "8000"
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:${ADMIN_HTTP_PORT:-8000}:8000"
|
# По умолчанию только loopback. Для NPM (контейнер) задайте ADMIN_BIND_IP=172.17.0.1:
|
||||||
|
# порт остаётся недоступен из интернета, но виден контейнерам на bridge.
|
||||||
|
- "${ADMIN_BIND_IP:-127.0.0.1}:${ADMIN_HTTP_PORT:-8101}:8000"
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ services:
|
||||||
ADMIN_HOST: 0.0.0.0
|
ADMIN_HOST: 0.0.0.0
|
||||||
ADMIN_PORT: "8000"
|
ADMIN_PORT: "8000"
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:${ADMIN_HTTP_PORT:-8000}:8000"
|
- "${ADMIN_BIND_IP:-127.0.0.1}:${ADMIN_HTTP_PORT:-8000}:8000"
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|
|
||||||
|
|
@ -40,9 +40,11 @@ CLICKHOUSE_PASSWORD=
|
||||||
# Порт на хосте (для бэкапа). У test и prod он должен различаться.
|
# Порт на хосте (для бэкапа). У test и prod он должен различаться.
|
||||||
CLICKHOUSE_HTTP_PORT=8123
|
CLICKHOUSE_HTTP_PORT=8123
|
||||||
|
|
||||||
# Админка (FastAPI). Порт на loopback хоста; у test и prod должен различаться.
|
# Админка (FastAPI). Порт на хосте; у test и prod должен различаться
|
||||||
# Наружу пока не публикуется (домен/TLS — Блок 2.4).
|
# (test 8100, prod 8101 — 8000 занят Portainer).
|
||||||
ADMIN_HTTP_PORT=8000
|
# ADMIN_BIND_IP=127.0.0.1 — только хост; для nginx-proxy-manager поставьте 172.17.0.1.
|
||||||
|
ADMIN_HTTP_PORT=8101
|
||||||
|
ADMIN_BIND_IP=127.0.0.1
|
||||||
|
|
||||||
# Шаблоны сообщений: TTL кеша бота (правки из админки без перезапуска).
|
# Шаблоны сообщений: TTL кеша бота (правки из админки без перезапуска).
|
||||||
TEMPLATE_CACHE_TTL=45
|
TEMPLATE_CACHE_TTL=45
|
||||||
|
|
|
||||||
|
|
@ -38,9 +38,11 @@ CLICKHOUSE_PASSWORD=
|
||||||
# Порт на хосте: у test он отличается от prod (8123), иначе конфликт на одной VPS.
|
# Порт на хосте: у test он отличается от prod (8123), иначе конфликт на одной VPS.
|
||||||
CLICKHOUSE_HTTP_PORT=8124
|
CLICKHOUSE_HTTP_PORT=8124
|
||||||
|
|
||||||
# Админка (FastAPI). Порт на loopback хоста; у test и prod должен различаться.
|
# Админка (FastAPI). Порт на хосте; у test и prod должен различаться
|
||||||
# Наружу пока не публикуется (домен/TLS — Блок 2.4).
|
# (test 8100, prod 8101 — 8000 занят Portainer).
|
||||||
ADMIN_HTTP_PORT=8001
|
# ADMIN_BIND_IP=127.0.0.1 — только хост; для nginx-proxy-manager поставьте 172.17.0.1.
|
||||||
|
ADMIN_HTTP_PORT=8100
|
||||||
|
ADMIN_BIND_IP=127.0.0.1
|
||||||
|
|
||||||
# Шаблоны сообщений: TTL кеша бота (правки из админки без перезапуска).
|
# Шаблоны сообщений: TTL кеша бота (правки из админки без перезапуска).
|
||||||
TEMPLATE_CACHE_TTL=45
|
TEMPLATE_CACHE_TTL=45
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,4 @@ from common import __version__
|
||||||
|
|
||||||
def test_version_is_set():
|
def test_version_is_set():
|
||||||
assert __version__
|
assert __version__
|
||||||
assert __version__ == "0.4.3"
|
assert __version__ == "0.4.4"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue