У админки теперь постоянные порты, которые не спорят с 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.
|
||||
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`) у контуров должен различаться:
|
||||
`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 (если пакет приватный)
|
||||
|
||||
|
|
@ -84,13 +86,15 @@ docker compose -p test --env-file env/test.env -f docker-compose.prod.yml exec -
|
|||
## Админка (FastAPI)
|
||||
|
||||
Сервис `admin` — отдельный образ `mpakobecex/dispelevilbot-admin`, общий пакет `common`.
|
||||
Наружу пока **не публикуется**: только loopback хоста (`127.0.0.1:${ADMIN_HTTP_PORT}`).
|
||||
Домен и TLS появятся вместе с входом через Telegram (Блоки 2.4/4.2).
|
||||
Наружу пока **не публикуется**: по умолчанию только loopback хоста
|
||||
(`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
|
||||
# проверка живости
|
||||
curl -s http://127.0.0.1:8001/healthz # test
|
||||
curl -s http://127.0.0.1:8000/healthz # prod
|
||||
curl -s http://127.0.0.1:8100/healthz # test
|
||||
curl -s http://127.0.0.1:8101/healthz # prod
|
||||
```
|
||||
|
||||
Локально без Docker: `pip install -r requirements-admin.txt && python -m admin`
|
||||
|
|
|
|||
|
|
@ -92,8 +92,9 @@ docker compose up --build
|
|||
```
|
||||
|
||||
CI собирает два образа: `dispelevilbot-bot` и `dispelevilbot-admin`. Админка в compose
|
||||
публикуется только на loopback (`127.0.0.1:${ADMIN_HTTP_PORT}`), наружу выйдет вместе
|
||||
с доменом и TLS (Блок 2.4/4.2).
|
||||
по умолчанию публикуется только на loopback (`127.0.0.1:${ADMIN_HTTP_PORT}`, test 8100 /
|
||||
prod 8101); для nginx-proxy-manager задаётся `ADMIN_BIND_IP=172.17.0.1`, наружу выйдет
|
||||
вместе с доменом и TLS (Блок 4.2).
|
||||
|
||||
Прод/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`).
|
||||
- Docker-образы тегируются версией (Блок 2), события ClickHouse получают `bot_version` (Блок 3).
|
||||
- Выпуск: изменить `common/version.py` → коммит → аннотированный тег `vX.Y` → `git push --tags`.
|
||||
|
|
|
|||
|
|
@ -7,4 +7,4 @@
|
|||
|
||||
from __future__ import annotations
|
||||
|
||||
__version__ = "0.4.3"
|
||||
__version__ = "0.4.4"
|
||||
|
|
|
|||
|
|
@ -75,7 +75,9 @@ services:
|
|||
ADMIN_HOST: 0.0.0.0
|
||||
ADMIN_PORT: "8000"
|
||||
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:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ services:
|
|||
ADMIN_HOST: 0.0.0.0
|
||||
ADMIN_PORT: "8000"
|
||||
ports:
|
||||
- "127.0.0.1:${ADMIN_HTTP_PORT:-8000}:8000"
|
||||
- "${ADMIN_BIND_IP:-127.0.0.1}:${ADMIN_HTTP_PORT:-8000}:8000"
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
|
|
|||
|
|
@ -40,9 +40,11 @@ CLICKHOUSE_PASSWORD=
|
|||
# Порт на хосте (для бэкапа). У test и prod он должен различаться.
|
||||
CLICKHOUSE_HTTP_PORT=8123
|
||||
|
||||
# Админка (FastAPI). Порт на loopback хоста; у test и prod должен различаться.
|
||||
# Наружу пока не публикуется (домен/TLS — Блок 2.4).
|
||||
ADMIN_HTTP_PORT=8000
|
||||
# Админка (FastAPI). Порт на хосте; у test и prod должен различаться
|
||||
# (test 8100, prod 8101 — 8000 занят Portainer).
|
||||
# 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 кеша бота (правки из админки без перезапуска).
|
||||
TEMPLATE_CACHE_TTL=45
|
||||
|
|
|
|||
|
|
@ -38,9 +38,11 @@ CLICKHOUSE_PASSWORD=
|
|||
# Порт на хосте: у test он отличается от prod (8123), иначе конфликт на одной VPS.
|
||||
CLICKHOUSE_HTTP_PORT=8124
|
||||
|
||||
# Админка (FastAPI). Порт на loopback хоста; у test и prod должен различаться.
|
||||
# Наружу пока не публикуется (домен/TLS — Блок 2.4).
|
||||
ADMIN_HTTP_PORT=8001
|
||||
# Админка (FastAPI). Порт на хосте; у test и prod должен различаться
|
||||
# (test 8100, prod 8101 — 8000 занят Portainer).
|
||||
# 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 кеша бота (правки из админки без перезапуска).
|
||||
TEMPLATE_CACHE_TTL=45
|
||||
|
|
|
|||
|
|
@ -7,4 +7,4 @@ from common import __version__
|
|||
|
||||
def test_version_is_set():
|
||||
assert __version__
|
||||
assert __version__ == "0.4.3"
|
||||
assert __version__ == "0.4.4"
|
||||
|
|
|
|||
Loading…
Reference in New Issue