- Flask-приложение управления DVR Hikvision - Предпросмотр каналов, архив, скачивание клипов - Управление пользователями с правами доступа - Docker-контейнер с Gunicorn
2.9 KiB
2.9 KiB
DVR Admin — сборка и деплой Docker-контейнера
Первый запуск (локально)
cd /home/deeily/git/ISAPI/dvr_admin_docker
docker compose 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/dvr_admin_docker
docker build -t dvr_admin:latest .
docker save dvr_admin:latest | gzip > 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 из оригинальной папки
cp /home/deeily/git/ISAPI/dvr_admin/app.py /home/deeily/git/ISAPI/dvr_admin_docker/app.py
cd /home/deeily/git/ISAPI/dvr_admin_docker
# --no-cache обязателен, иначе Docker использует старый кэш и упакует старый app.py
docker build --no-cache -t dvr_admin:latest .
docker save dvr_admin:latest | gzip > 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