MFCoind и MFC Block Explorer в Docker контейнере


  • administrators

    Так как я порядком устал расставлять новые ноды MFCoind по серверам, а так же меня достал тот факт что наш первый блок эксплорер сложно развернуть еще где-то, то руки добрались до Docker-а в котором я смог решить обе проблемы разом.

    И так представляю 3 репозитария с докер имиджами для всеобщего использования:

    MFCoind docker images

    Первый имидж на CentOS 7, так как я лично предпочитаю системы базирующиеся на RedHat.
    Второй имидж на Ubuntu 16.04, так как многие вещи из мира блокчейна и крипты лучше описаны и быстрее настраиваются именно на этом дистре.

    Больше различия между двумя имиджами нету. При запуске докер контейнера из данных имиджей поднимается система и запускается MFCoind (с флагами -index и -daemon), а в интерактивную консоль (если запускать с флагом -i) пишутся дебаг логи MFCoind. Также контейнет умеет отдавать два сетевых порта наружу:

    • 22823 - для контрольного соединения с сервисом по JSON-RPC
    • 22824 - для P2P общения сервиса с другими членами блокчейн сети

    При запуске MFCoind для RPC подключения, по умолчанию, логин MFCoinrpc и пароль MFCoinrpcPass, но эти данные можно менять при запуске контейнера, отдавая ему переменные окружения RPCUSER и RPCPASS с соответствующими значениями.

    Примеры запуска контейнеров:

    Интерактивный запуск со стандартными портами на CentOS:

    docker run -p 22823:22823 -p 22824:22824 --name mfcoind-centos -ti --rm mamchenkov/mfcoind-centos

    После создания контейнера можно подключаться по JSON-RPC к 127.0.0.1:22823

    Запуск контейнера в фоновом режиме, на других портах и с другим логином/паролем:

    docker run -p 8023:22823 -p 8024:22824 -e RPCUSER='alex' -e RPCPASS='youllneverguessme' --name mfcoind-ubuntu -d --rm mamchenkov/mfcoind-ubuntu

    После создания контейнера можно подключаться по JSON-RPC к 127.0.0.1:8023

    Примечание: при создание контейнера все данные MFCoind делаются с нуля, поэтому требуется время для синхронизации с блокчейном. При удаление контейнера эти данные также удаляются, поэтому не советую использовать эти кошельки для хранения денег. Если же надо обеспечить сохранность данных в кошельке, лучше цеплять данные с локальной машины из вне докера:

    docker run -p 22823:22823 -p 22824:22824 -v /home/alex/.MFCoin:/root/.MFCoin -ti --name mfcoind-centos-save --rm mamchenkov/mfcoind-centos

    Это пробросить данные вашего локального кошелька из /home/alex/.MFCoin (если брать стандартные значения для пользователя alex в линуксовой системе) в нужное место в контейнере и после выключения все изменения останутся у вас локально.

    MFC Litesight Block Explorer docker image

    Еще один полезный имидж я сделал на базе второго имиджа mfcoind, куда успешно упаковал взятый с блок эксплорера Litesight и древний NVM. Так как собрать Litesight на текущей версии NVM не представляется реальным из-за античности пакетов, другого разумного варианта я не нашел. В имидже уже предустановлено всё что надо для работы и при запуске запускается MFCoind, а через 2 минуты поднимается блок эксплорер на 80-ом порту.

    Пример запуска c мапингом 80 порта докера к 8080 порту текущей машины:

    docker run -p 8080:80 --name mfc-explorer -d --rm mamchenkov/mfc-explorer

    После запуска и ожидания в 2 минуты можно цепляться по http://localhost:8080.
    Также потребуется где-то 15-20 минут на полную синхронизацию как MFCoind, так и блок эксплорера самого.

    Данный имидж удобен если вы хотите иметь свой блок эксплорер в случае разработки софта, нуждающегося в API эксплорера и хотите сами контролировать стабильность и доступность сервиса.

    TODO

    • Чуть позже создам репозиторий, куда на регулярной основе буду выкладывать последнию версию данных блокчейна и поправлю имиджы на предварительную скачку данногой инфы, чтобы сократить время синхранизации MFCoind с текущем состаянием блокчейна
    • После выполнения пункта выше, поправлю имидж блок эксплорера на использование локальных .dat файлов для синхронизации вместо JSON-RPC. На данный момент у Litesight сдувает башню если он начинает синхронизироваться с MFCoind, который в свою очередь еще сам до конце не синхронизовался с блокчейном.
    • Возможно когда-то у меня доберутся руки до упаковки Electrum сервиса в докер, что тоже должно порядком усилить инфраструктуру и увеличить стабильность мобильных кошельков.

    HINTS

    • Вы можете делать свои докер имиджы на базе тех что я предоставил. Пример как из одного сделать другое можно посмотреть в mfc-explorer, так как он базируется на mfcoind-ubuntu
    • Сделать mfc-explorer на базе mfcoind-centos у меня не получилось, хотя и очень хотелось, из-за несовместимости версий GLIBC_CXX. В принципе можно еще поковыряться, но времени нету. Может позже сделаю на базе Fedora как вариант, чтобы далеко от RedHat не отходить.
    • Во всех репозиториях докер имиджей что я перечислил есть прямая ссылка на соответсвующие Bitbucket репозитории, где вы сможете увидеть полный комплект исходников если вам интересно, а так же можете форкнуть себе в загажник или для модификаций под себя.
    • По любым вопросам стучитесь ко мне в телегу (@alex_mamchenkov)
    • Донаты в MFC и BTC всегда велком ;-)

  • administrators

    • Добавил новый репозитори mfcoind-data в котором лежат все файлы более-менее свежего блокчейна.
    • Поправил все докер имиджы чтобы они выкачивали данный репозиторий себе в /root/.MFCoin до того как запускать сам MFCoind. Это очень сильно ускорило синхранизацию.
    • Поменял тип синхронизации блок эксплорера с JSON-RPC на Local .dat files. Это ускоряет синхронизацию и снимает нагрузку с MFCoind за счет уменьшения JSON-RPC запросов к нему.

    По факту теперь после успешного запуска контейнера, хоть он и чуть дольше запускается за счет скачивания файлов, блокэксплорер синхронизируется всего за пару минут, вместо 15-20 до этого.

    Осталось сделать автообновление файлов блокчейна по интервалу (раз в час или раз в день) и всё будет вообще хорошо. Но даже те 90к+ блоков что уже лежат в репозитарии делают своё дело.


  • Global Moderator

    @alex_mamchenkov said in MFCoind и MFC Block Explorer в Docker контейнере:

    docker run -p 22823:22823 -p 22824:22824 --name mfcoind-centos --ti --rm mamchenkov/mfcoind-centos

    Вроде как правильно параметр -ti без двух черточек


  • administrators

    @stereolubov очепятка, сорри, спасибо, поправил


  • administrators

    Добавил автоматическое обновление репозитария с данными блокчейна раз в час, теперь вроде вообще красиво всё должно быть


  • administrators

    Из-за быстроты роста репозитария со всеми комитами пришлось поменять тактику. Теперь обновленный архив выкладывается в dropbox. В репозитарии осталась инструкция к применению.

    Все имиджы, которые использовали репозитарий исправлены на использование дропбокса.

    Архив обновляется пару раз в час


 

Looks like your connection to MFCoin & Freeland Forum was lost, please wait while we try to reconnect.