# Развернуть ноду в Docker
Самый простой способ запустить ноду Waves — это развернуть образ Waves в Docker. Docker-образ Waves предназначен для быстрого и удобного разворачивания ноды и содержит скрипты и файлы конфигурации для запуска ноды в сети Mainnet, Testnet, Stagenet и любой другой кастомной сети.
GitHub-репозиторий: https://github.com/wavesplatform/Waves/tree/master/docker.
# Предварительные требования
Установите приложение Docker с официального сайта.
# Сборка Docker-образа
Вы можете загрузить актуальную версию Docker-образа на странице Docker Hub или с помощью команды:
docker pull wavesplatform/wavesnode
Или используйте следующую команду для сборки образа из текущего локального репозитория (из корневого каталога репозитория):
./build-with-docker.sh && docker build -t wavesplatform/wavesnode docker
Вы можете задать следующие параметры при сборке образа:
Параметр | Значение по умолчанию | Описание |
---|---|---|
WAVES_NETWORK | mainnet | Тип блокчейн-сети Waves. Возможные значения: mainnet , testnet или stagenet . Значение может быть переопределено во время выполнения, с помощью переменной среды с тем же именем. |
WAVES_LOG_LEVEL | DEBUG | Уровень логирования по умолчанию. Возможные значения: OFF , ERROR , WARN , INFO , DEBUG или TRACE . Значение может быть переопределено во время выполнения, с помощью переменной среды с тем же именем. Подробнее про логирование. |
WAVES_HEAP_SIZE | 2g | Ограничение Java Heap Size в нотации -X Command-line Options (-Xms=[ваше значение]). Значение может быть переопределено во время выполнения, с помощью переменной среды с тем же именем. Подробнее про -X Command-line Options. |
# Запуск образа
# Параметры конфигурации ноды
Будьте внимательны: от конфигурации ноды зависит безопасность вашего кошелька и средств. Подробная информация приведена в статье Конфигурация ноды.
Параметры конфигурации ноды можно указать в файле конфигурации ноды или при запуске образа в виде переменных среды.
# Переменные среды
Переменная | Описание |
---|---|
WAVES_WALLET_SEED | Seed-фраза в base58. Игнорируется, если в JAVA_OPTS задан JVM-параметр -Dwaves.wallet.seed или смонтирован собственный файл конфигурации |
WAVES_WALLET_PASSWORD | Пароль файла кошелька. Игнорируется, если в JAVA_OPTS задан JVM-параметр -Dwaves.wallet.password или смонтирован собственный файл конфигурации |
WAVES_LOG_LEVEL | Уровень логирования ноды. Возможные значения: OFF , ERROR , WARN , INFO , DEBUG и TRACE . Подробнее про логирование |
WAVES_HEAP_SIZE | Ограничение Java Heap Size в нотации -X Command-line Options (-Xms=[ваше значение]). Подробнее про -X Command-line Options |
WAVES_NETWORK | Тип сети Waves. Возможные значения: mainnet , testnet и stagenet |
JAVA_OPTS | Дополнительные параметры JVM-конфигурации ноды. Полные пути к параметрам конфигурации и примеры значений можно посмотреть в файле application.conf |
Пример команды запуска образа ноды с переменными среды:
docker run -v /docker/waves/waves-data:/var/lib/waves -v /docker/waves/waves-config:/etc/waves -p 6869:6869 -p 6862:6862 -e JAVA_OPTS="-Dwaves.rest-api.enable=yes -Dwaves.wallet.password=myWalletSuperPassword" -ti wavesplatform/wavesnode
# Файл конфигурации
Нода Waves ищет конфигурацию в файле /etc/waves/waves.conf
внутри контейнера. Вы можете смонтировать собственный файл конфигурации с помощью Docker volumes, как описано в подразделе Работа с данными ниже.
Если файл не существует, будет создан файл конфигурации по умолчанию в зависимости от типа сети, заданного переменной WAVES_NETWORK
.
Если значение WAVES_NETWORK
отлично от mainnet
, testnet
или stagenet
, конфигурации по умолчанию недостаточно для корректной работы ноды. В этом случае будет использован тип сети CUSTOM
, для которого требуется файл конфигурации с соответствующими настройками. Если запустить образ с типом сети CUSTOM
и система не обнаружит файл /etc/waves/waves.conf
, то образ не запустится.
# Приоритет параметров
- Параметры, заданные с помощью
JAVA_OPTS
. - Параметры из собственного файла конфигурации ноды (если он смонтирован).
- Параметры, заданные с помощью
WAVES_WALLET_SEED
,WAVES_WALLET_PASSWORD
,WAVES_NETWORK
. - Параметры конфигурации по умолчанию.
Например:
- Если смонтирован собственный файл конфигурации ноды, то используются параметры из этого файла, за исключением переопределенных в
JAVA_OPTS
. - Если используется файл конфигурации по умолчанию и заданы переменные среды
WAVES_WALLET_SEED
иWAVES_WALLET_PASSWORD
, то используются значения этих переменных (если они не переопределены вJAVA_OPTS
).
# Работа с данными
Рекомендуется хранить файлы состояния блокчейна и файлы конфигурации на стороне хоста. Используйте Docker volumes, чтобы смонтировать каталоги c хоста в контейнер.
Пример:
Создайте на хосте каталоги для хранения данных Waves с помощью следующих команд:
mkdir -p /docker/waves mkdir /docker/waves/waves-data mkdir /docker/waves/waves-config
Если у вас уже есть файл конфигурации или другие данные, поместите их в соответствующие каталоги.
Смонтируйте каталоги с хоста в контейнер. Для этого добавьте соответствующие аргументы в команду
docker run
, как в следующем примере:docker run -v /docker/waves/waves-data:/var/lib/waves -v /docker/waves/waves-config:/etc/waves -e WAVES_NETWORK=stagenet -e WAVES_WALLET_PASSWORD=myWalletSuperPassword -ti wavesplatform/wavesnode
Если на хосте есть собственный файл конфигурации
/docker/waves/waves-config/waves.conf
, то нода в контейнере будет видеть его по пути/etc/waves/waves.conf
и прочитает настройки из него. Если файл отсутствует при запуске контейнера, будет использоваться файл конфигурации по умолчанию.Кроме того, нода в контейнере будет использовать следующие подкаталоги в каталоге
/docker/waves/waves-data
:/docker/waves/waves-data/log
— для логов ноды,/docker/waves/waves-data/data
— для файлов состояния блокчейна,/docker/waves/waves-data/wallet
— для данных кошелька.Если подкаталоги отсутствуют при запуске контейнера, они будут созданы.
# Состояние блокчейна
Если вы запускаете ноду впервые, имейте в виду, что после запуска нода начнет загружать файлы состояния блокчейна из других нод. Данный процесс занимает длительное время. Во время загрузки нода будет верифицировать все блоки один за другим.
Вы можете ускорить процесс. Для этого загрузите и распакуйте архив с файлами состояния блокчейна из официального источника и помеситите файлы в контейнер (как описано в секции Работа с данными). При таком сценарии нода пропустит верификацию блоков. Отказ от верификации также является причиной того, почему файлы состояния блокчейна следует загружать только из наших официальных источников:
Тип сети | Ссылка |
---|---|
mainnet | http://blockchain.wavesnodes.com/blockchain_last.tar |
testnet | http://blockchain-testnet.wavesnodes.com/blockchain_last.tar |
stagenet | http://blockchain-stagenet.wavesnodes.com/blockchain_last.tar |
Примечание: Мы не можем гарантировать соответствие данных загруженных из других источников.
Пример команд для загрузки файлов состояния блокчейна и запуска образа:
mkdir -p /docker/waves/waves-data
wget -qO- http://blockchain-stagenet.wavesnodes.com/blockchain_last.tar --show-progress | tar -xvf - -C /docker/waves/waves-data/data
docker run -v /docker/waves/waves-data:/var/lib/waves -e WAVES_NETWORK=stagenet -e WAVES_WALLET_PASSWORD=myWalletSuperPassword -ti wavesplatform/wavesnode
# Сетевые порты
Параметры REST API ноды можно задать в секции REST API файла конфигурации ноды. Порты для входящих подключений ноды можно задать в секции Настройки сети.
В следующем примере представлена команда для запуска ноды со следующими настройками:
- Порт REST-API включен и задан на socket
0.0.0.0:6870
- Порт соединения ноды включен и задан на socket
0.0.0.0:6868
- Порты
6868
и6870
заданы от хоста до контейнера
docker run -v /docker/waves/waves-data:/var/lib/waves -v /docker/waves/waves-config:/etc/waves -p 6870:6870 -p 6868:6868 -e JAVA_OPTS="-Dwaves.network.declared-address=0.0.0.0:6868 -Dwaves.rest-api.port=6870 -Dwaves.rest-api.bind-address=0.0.0.0 -Dwaves.rest-api.enable=yes" -e WAVES_WALLET_PASSWORD=myWalletSuperPassword -ti wavesplatform/wavesnode
Примечание: По умолчанию сетевой порт для подключения других нод зависит от типа сети: Mainnet — 6868, Testnet или custom — 6863, Stagenet — 6862. Для REST API по умолчанию используется порт 6869.
Для проверки работоспособности REST API, перейдите по следующей ссылке со стороны хоста: http://localhost:6870/api-docs/index.html
# Расширения
Вы можете запускать расширения следующим образом:
Скопируйте все lib/*.jar файлы из расширения в любой каталог, например
plugins
.Добавьте класс расширения в файле конфигурации ноды (например в
local.conf
):waves.extensions += com.johndoe.WavesExtension
Запустите образ с помощью команды:
docker run -v "$(pwd)/plugins:/usr/share/waves/lib/plugins" -v "$(pwd)/local.conf:/etc/waves/local.conf" -i wavesplatform/wavesnode
# Запуск ноды с расширением Blockchain Updates
Вы можете запустить ноду с включенным расширением blockchain updates. Само расширение уже есть в образе ноды, который мы публикуем, поэтому вы можете просто включить его с помощью консольных команд. Однако вам все равно нужно будет загрузить состояние блокчейна, а также данные расширения blockchain updates с blockchain.wavesnodes.com
и разархивировать их в папку /docker/waves/waves-data
.
Пример команд для запуска ноды из Docker-образа с включенным расширением blockchain updates:
docker run \
-v /docker/waves/waves-data:/var/lib/waves \
-e JAVA_OPTS="-Dwaves.rest-api.bind-address=0.0.0.0 -Dwaves.extensions.0=com.wavesplatform.events.BlockchainUpdates" \
-e WAVES_WALLET_PASSWORD=myWalletSuperPassword \
-p 6869:6869 \
-p 6881:6881 \
-i wavesplatform/wavesnode:1.3.15