124 lines
5.7 KiB
Markdown
124 lines
5.7 KiB
Markdown
---
|
||
icon: material/upload-network
|
||
tags: ["iptvc", "docker", "deploy"]
|
||
---
|
||
|
||
# :material-upload-network: Развёртывание и доставка обновлений
|
||
|
||
В этом разделе описано, как развернуть полную инфраструктуру проекта m3u.su на собственном сервере: веб-сервер, фоновую проверку плейлистов, кеш и документацию.
|
||
|
||
## Требования
|
||
|
||
- [Docker](https://docs.docker.com/engine/install/) с плагином `docker compose` (v2)
|
||
- Доступ к репозиториям `git.axenov.dev/IPTV`
|
||
|
||
## Структура окружения
|
||
|
||
Полное Docker-окружение описано в `compose.yml` и состоит из пяти сервисов:
|
||
|
||
| Сервис | Образ | Назначение |
|
||
| --------- | ---------------------------- | -------------------------------------- |
|
||
| `nginx` | `nginx:latest` | Reverse-proxy, порт 3000→80 |
|
||
| `keydb` | `eqalpha/keydb:latest` | Кеш (форк Redis), порт 6379 |
|
||
| `web` | PHP-FPM (сборка из `web/`) | Legacy веб-слой |
|
||
| `checker` | `iptvc` (сборка из `iptvc/`) | Фоновая проверка плейлистов |
|
||
| `docs` | MkDocs (сборка из `docs/`) | Статическая документация, порт 3001→80 |
|
||
|
||
## Переменные окружения
|
||
|
||
Перед запуском скопируйте `.env.example` в `.env` и при необходимости отредактируйте:
|
||
|
||
| Переменная | По умолчанию | Назначение |
|
||
| ----------------- | -------------------- | ----------------------------------------------- |
|
||
| `IPTV_ENV` | `dev` | Окружение (`dev`/`prod`), влияет на конфиги PHP |
|
||
| `KEYDB_UID` | `1000` | ID пользователя KeyDB |
|
||
| `KEYDB_GID` | `1000` | ID группы KeyDB |
|
||
| `KEYDB_PORT` | `6379` | Порт KeyDB на хосте |
|
||
| `KEYDB_USERNAME` | (пусто) | Логин KeyDB |
|
||
| `KEYDB_PASSWORD` | (пусто) | Пароль KeyDB |
|
||
| `CHECKER_DB` | `0` | Номер БД KeyDB для кеша |
|
||
| `CHECKER_TTL` | `1800` | TTL кеша в секундах |
|
||
| `CHECKER_WAIT` | `60` | Секунд между запусками `iptvc check` |
|
||
| `CHECKER_INIFILE` | `/app/playlists.ini` | Путь к `playlists.ini` в контейнере |
|
||
| `CHECKER_TAGFILE` | `/app/channels.json` | Путь к `channels.json` в контейнере |
|
||
|
||
## Управление через скрипт `iptv`
|
||
|
||
В корне репозитория находится bash-скрипт `iptv` для управления окружением:
|
||
|
||
```bash
|
||
./iptv init # клонировать подпроекты, собрать и запустить
|
||
./iptv up # построить и запустить контейнеры
|
||
./iptv down # остановить и удалить контейнеры
|
||
./iptv rebuild # down + up (с пересборкой образов)
|
||
./iptv restart # stop + start
|
||
./iptv stop # остановить контейнеры
|
||
./iptv start # запустить контейнеры
|
||
./iptv purge # удалить контейнеры и образы
|
||
./iptv logs <сервис> # логи сервиса
|
||
./iptv stats --no-stream # потребление ресурсов
|
||
./iptv exec <сервис> <команда> # команда в контейнере
|
||
./iptv exec --root <сервис> <команда> # от имени root
|
||
```
|
||
|
||
!!! warning "docker compose v2"
|
||
Скрипт использует `docker compose` (v2). `docker-compose` (v1) не поддерживается.
|
||
|
||
## Ручное управление
|
||
|
||
Без скрипта `iptv` можно управлять окружением напрямую:
|
||
|
||
```bash
|
||
# Запуск всех сервисов
|
||
docker compose up -d --build
|
||
|
||
# Остановка
|
||
docker compose down
|
||
|
||
// Логи конкретного сервиса
|
||
docker compose logs -f checker
|
||
|
||
// Перезапуск одного сервиса
|
||
docker compose restart checker
|
||
```
|
||
|
||
## Сервис `checker`
|
||
|
||
Контейнер `checker` запускает `iptvc` с командой:
|
||
|
||
```bash
|
||
check --repeat 0 --every ${CHECKER_WAIT:-60}
|
||
```
|
||
|
||
Это означает бесконечную (`--repeat 0`) фоновую проверку всех плейлистов из `playlists.ini` каждые 60 секунд (настраивается через `CHECKER_WAIT`).
|
||
|
||
Контейнер монтирует:
|
||
|
||
- `playlists/playlists.ini` → `/app/playlists.ini`
|
||
- `playlists/channels.json` → `/app/channels.json`
|
||
- `iptvc/config.yml` → `/app/config.yml` (только чтение)
|
||
|
||
Переменные окружения для кеша передаются автоматически из `.env`.
|
||
|
||
## Обновление
|
||
|
||
Чтобы обновить образы и пересобрать контейнеры:
|
||
|
||
```bash
|
||
./iptv rebuild
|
||
```
|
||
|
||
Или вручную:
|
||
|
||
```bash
|
||
docker compose pull
|
||
docker compose up -d --build
|
||
```
|
||
|
||
Для обновления только `iptvc`:
|
||
|
||
```bash
|
||
docker compose build checker
|
||
docker compose up -d checker
|
||
```
|