Переведено скачивание клипов на Hikvision SDK (PlayBackByTime_V40 + data callback) — точное время по часам DVR без seek-смещения. Исправлена загрузка SDK-библиотек через self-restart с LD_LIBRARY_PATH. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
DVR Admin — сборка и деплой Docker-контейнера
Первый запуск (локально)
cd /home/deeily/git/ISAPI
docker compose -f dvr_admin_docker/docker-compose.yml up -d --build
Приложение будет доступно на http://localhost:5001
Логин по умолчанию: admin / admin
БД и ключ шифрования создаются автоматически в /home/deeily/docker/dvr_admin/
Обновление (пересборка образа)
cd /home/deeily/git/ISAPI/dvr_admin_docker
# Пересобрать и перезапустить (данные сохраняются)
docker compose up -d --build
Перенос на другой сервер
1. Собрать и экспортировать образ
cd /home/deeily/git/ISAPI
docker build -f dvr_admin_docker/Dockerfile -t dvr_admin:latest .
docker save dvr_admin:latest | gzip > dvr_admin_docker/dvr_admin.tar.gz
2. Скопировать на сервер
scp dvr_admin.tar.gz user@server:/opt/dvr_admin/
Также скопировать docker-compose.yml, заменив build: . на image: dvr_admin:latest:
services:
dvr_admin:
image: dvr_admin:latest # вместо build: .
container_name: dvr_admin
restart: unless-stopped
ports:
- "5001:8000"
volumes:
- /opt/dvr_admin/data:/data # папка для БД на сервере
environment:
- SECRET_KEY=<сгенерировать>
- DATA_DIR=/data
- FERNET_KEY=<сгенерировать>
3. Запустить на сервере
docker load < dvr_admin.tar.gz
docker compose up -d
Обновление на удалённом сервере
# На локальной машине — пересобрать и экспортировать
# Запускать из корня проекта — app.py и lib/ берутся из dvr_admin/ автоматически
cd /home/deeily/git/ISAPI
# --no-cache обязателен, иначе Docker использует старый кэш и упакует старый app.py
docker build --no-cache -f dvr_admin_docker/Dockerfile -t dvr_admin:latest .
docker save dvr_admin:latest | gzip > dvr_admin_docker/dvr_admin.tar.gz
scp dvr_admin.tar.gz user@server:/opt/dvr_admin/
# На сервере — загрузить новый образ и перезапустить (данные сохраняются)
docker stop dvr_admin && docker rm dvr_admin
docker load < dvr_admin.tar.gz
docker compose up -d
Генерация ключей
# SECRET_KEY
python3 -c "import secrets; print(secrets.token_hex(32))"
# FERNET_KEY
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
Просмотр логов
docker logs dvr_admin -f