Files
docs/content/iptvc/site/deploy.md
T
2026-07-16 12:07:22 +08:00

7.2 KiB
Raw Blame History

icon, tags
icon tags
material/upload-network
iptvc
docker
deploy

: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 запущен.