7.2 KiB
icon, tags
| icon | tags | |||
|---|---|---|---|---|
| material/upload-network |
|
:material-upload-network: Развёртывание и доставка обновлений
В этом разделе описан фактический порядок настройки окружения iptv с приложением iptvc, хранилищем KeyDB и сайтом документации.
Требования
- Docker с плагином
docker composeверсии 2 - Git и доступ к репозиторию
git.axenov.dev/IPTV - Права на запись в каталог данных KeyDB
- Доступ к registry
git.axenov.dev, если вы публикуете образiptvc
!!! warning "Только docker compose v2"
Используйте команду docker compose.
Устаревшая команда docker-compose в этом сценарии не поддерживается.
Подготовка репозитория
Клонируйте основной репозиторий и перейдите в его каталог:
git clone https://git.axenov.dev/IPTV.git
cd IPTV
В корне проекта должны находиться compose.yml, .env, config.yml, playlists.ini, channels.json и каталог docker/keydb.
Исходный код приложения располагается в iptvc/, а документации — в docs/.
Настройка файлов
Создайте файлы локальной конфигурации на основе примеров:
cp .env.example .env
cp iptvc/config.yml.example config.yml
Отредактируйте config.yml.
В контейнере iptvc он подключается как /app/config.yml.
Минимально проверьте следующие параметры:
app.playlists— путь к файлу плейлистов;app.tags— путь к файлу тегов каналов;server.hostиserver.port— адрес и порт веб-интерфейса;cache.enabledи параметрыcache— использование KeyDB;site.base-url— внешний адрес приложения.
Скопируйте входные данные плейлистов в корень окружения:
cp /path/to/playlists.ini ./playlists.ini
cp /path/to/channels.json ./channels.json
Эти файлы монтируются в контейнер как /app/playlists.ini и /app/channels.json.
В .env задаются параметры приложения из iptvc/.env.example, включая APP_URL, SERVER_PORT, CACHE_ENABLED, CACHE_HOST, CACHE_PORT, CACHE_DB и CACHE_TTL.
Для подключения к KeyDB из контейнера укажите имя сервиса keydb в CACHE_HOST, а не localhost.
Состав окружения
Файл compose.yml запускает три сервиса:
| Сервис | Образ | Назначение |
|---|---|---|
iptvc |
git.axenov.dev/iptv/iptvc:latest |
Веб-интерфейс и фоновая проверка плейлистов |
keydb |
eqalpha/keydb:latest |
Кеш результатов проверки |
docs |
git.axenov.dev/iptv/iptv-docs:latest |
Сайт документации |
Сервис iptvc публикует порт 8800, а docs — порт 8801.
KeyDB публикует порт, заданный KEYDB_PORT, по умолчанию 6379.
Сервис iptvc зависит от keydb и запускается с командой serve --check --repeat 0.
Это поднимает веб-сервер и запускает бесконечную фоновую проверку.
Запуск
После подготовки файлов соберите и запустите окружение из корня проекта:
docker compose up -d --build
Проверьте состояние контейнеров и журналы:
docker compose ps
docker compose logs -f iptvc
Веб-интерфейс приложения доступен на http://localhost:8800.
Документация доступна на http://localhost:8801.
Для остановки окружения выполните:
docker compose down
Сборка образа iptvc
Для публикации образа используйте скрипт iptvc/build-docker-image.sh.
Скрипт вычисляет версию из Git, собирает образы с тегами iptvc:<тег> и git.axenov.dev/iptv/iptvc:<тег>, а затем отправляет registry-тег в registry:
cd iptvc
./build-docker-image.sh latest
Для публикации релизного тега:
./build-docker-image.sh v1.2.3
По умолчанию скрипт собирает Linux-образ для amd64.
Платформу можно изменить переменными окружения:
GOOS=linux GOARCH=arm64 ./build-docker-image.sh v1.2.3
Перед публикацией войдите в registry, если это требуется вашей настройкой:
docker login git.axenov.dev
!!! warning "Рабочее дерево Git"
Скрипт переключается на Git-тег, переданный первым аргументом, или на тег, возвращённый git describe.
Перед запуском сохраните локальные изменения и убедитесь, что нужный тег существует.
Обновление
После изменения конфигурации или исходного кода пересоберите и перезапустите сервисы:
docker compose up -d --build
Чтобы пересобрать только приложение iptvc:
docker compose build iptvc
docker compose up -d iptvc
Чтобы использовать опубликованный образ вместо локальной сборки, загрузите его и пересоздайте сервис:
docker compose pull iptvc
docker compose up -d iptvc
Обновление документации выполняется пересборкой сервиса docs:
docker compose build docs
docker compose up -d docs
Диагностика
Для просмотра журналов отдельных сервисов используйте:
docker compose logs -f iptvc
docker compose logs -f keydb
docker compose logs -f docs
Для проверки конфигурации Compose выполните:
docker compose config
Если iptvc не подключается к кешу, проверьте, что в .env параметр CACHE_HOST имеет значение keydb, а сервис keydb запущен.