Skip to content

Развёртывание через Docker

VIZ Ledger поставляется с четырьмя Docker-образами для различных профилей развёртывания. Все используют двухэтапную сборку: этап builder компилирует бинарный файл; этап runtime содержит только бинарный файл и конфигурацию.


Доступные образы

DockerfileТегОписание
Dockerfile-productionlatestПолный узел мейннета (Release, все плагины)
Dockerfile-testnettestnetУзел тестнета (BUILD_TESTNET=ON)

Быстрый старт

bash
docker run -d \
  --name vizd \
  --restart unless-stopped \
  -p 2001:2001 \
  -p 8090:8090 \
  -p 8091:8091 \
  -v /data/vizd:/var/lib/vizd \
  vizblockchain/vizd:latest

Просмотр логов:

bash
docker logs -f vizd

Тома

Путь в контейнереНазначение
/var/lib/vizdДанные блокчейна, разделяемая память, block log
/etc/vizdФайлы конфигурации

Всегда монтируйте /var/lib/vizd для сохранения состояния между перезапусками контейнера.

Использование пользовательской конфигурации:

bash
docker run -d \
  -v /data/vizd:/var/lib/vizd \
  -v /my/config.ini:/etc/vizd/config.ini \
  vizblockchain/vizd:latest

Переменные окружения

Скрипт входа (vizd.sh) считывает следующие переменные окружения:

ПеременнаяОписаниеПример
VIZD_RPC_ENDPOINTПереопределить HTTP RPC endpoint0.0.0.0:8090
VIZD_P2P_ENDPOINTПереопределить P2P endpoint0.0.0.0:2001
VIZD_WITNESSИмя аккаунта валидатора (включает производство блоков)alice
VIZD_PRIVATE_KEYПодписывающий ключ валидатора в формате WIF5J...

Порты

ПортПротоколНазначение
2001TCPP2P-соединения с пирами
8090TCPHTTP JSON-RPC
8091TCPWebSocket JSON-RPC

Узел-валидатор (Docker)

bash
docker run -d \
  --name vizd-validator \
  --restart unless-stopped \
  -p 2001:2001 \
  -v /data/vizd:/var/lib/vizd \
  -e VIZD_WITNESS=myvalidator \
  -e VIZD_PRIVATE_KEY=5Jxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
  vizblockchain/vizd:latest

Для валидаторов не открывайте порты 8090/8091 публично — привязывайте только к localhost:

bash
-e VIZD_RPC_ENDPOINT=127.0.0.1:8090

Узел тестнета

bash
docker run -d \
  --name vizd-testnet \
  -p 2001:2001 \
  -p 8090:8090 \
  -v /data/vizd-testnet:/var/lib/vizd \
  vizblockchain/vizd:testnet

Локальная сборка образов

bash
# Production
docker build \
  -f share/vizd/docker/Dockerfile-production \
  -t vizd:local \
  .

# Testnet
docker build \
  -f share/vizd/docker/Dockerfile-testnet \
  -t vizd:testnet \
  .

CMake-флаги для каждого образа

ОбразLOW_MEMORY_NODEBUILD_TESTNET
productionOFFOFF
testnetOFFON

CI/CD (GitHub Actions)

В репозитории поставляется .github/workflows/docker-main.yml, который собирает и публикует production-образ с тегом latest при каждом push в master.

yaml
- name: Build and push
  uses: docker/build-push-action@v2
  with:
    file: share/vizd/docker/Dockerfile-production
    tags: vizblockchain/vizd:latest
    push: true

Требования к ресурсам

Тип узлаRAMДиск
Полный узел (мейннет)8 ГБ+50 ГБ+
Узел-валидатор4 ГБ20 ГБ
Тестнет4 ГБ10 ГБ

Начинайте с размера разделяемой памяти, удобно помещающегося в RAM. В config.ini:

ini
shared-file-size = 4G

Устранение неполадок

СимптомПричинаРешение
Контейнер сразу завершаетсяПлохая конфигурация или отсутствующий томdocker logs vizd — проверьте ошибки запуска
Порт 8090 недоступенRPC привязан к localhostУберите префикс 127.0.0.1: или используйте reverse proxy
Нет пировФайрвол блокирует порт 2001Откройте порт 2001 TCP входящий
Медленная синхронизацияСнимок не загруженПредоставьте снимок в томе перед первым запуском
Permission denied на /var/lib/vizdНесоответствие владельца томаchown -R 1000:1000 /data/vizd