# DVR Admin — сборка и деплой Docker-контейнера ## Первый запуск (локально) ```bash 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/` --- ## Обновление (пересборка образа) ```bash cd /home/deeily/git/ISAPI/dvr_admin_docker # Пересобрать и перезапустить (данные сохраняются) docker compose up -d --build ``` --- ## Перенос на другой сервер ### 1. Собрать и экспортировать образ ```bash 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. Скопировать на сервер ```bash scp dvr_admin.tar.gz user@server:/opt/dvr_admin/ ``` Также скопировать `docker-compose.yml`, заменив `build: .` на `image: dvr_admin:latest`: ```yaml 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. Запустить на сервере ```bash docker load < dvr_admin.tar.gz docker compose up -d ``` --- ## Обновление на удалённом сервере ```bash # На локальной машине — пересобрать и экспортировать # Запускать из корня проекта — 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 ``` --- ## Генерация ключей ```bash # 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())" ``` --- ## Просмотр логов ```bash docker logs dvr_admin -f ```