docker -создание файла для Postgre, Cordite, узла Corda и серверной части

#docker #corda #cordite

#docker #corda #cordite

Вопрос:

Я ищу файл docker-compose, который будет включать узлы Postgre, Cordite, Corda и соответствующий серверный сервер (spring boot). Я могу запускать узлы Postgre, Cordite и Corda по отдельности, но я хочу сгруппировать их в один файл. Я думаю, что это будет легко для целей развертывания.

Комментарии:

1. Привет, Ариджит. Вам нужен файл docker-conpose, в котором каждый из этих контейнеров docker указан как сервис. Они могут совместно использовать сеть, чтобы они могли общаться друг с другом, используя именованный DNS. У вас есть существующий файл docker-conpose, которым вы можете поделиться, который, похоже, не работает? В прошлом я использовал сценарий оркестровки в прошлом, чтобы раскрутить каждый элемент и дождаться его активации, прежде чем запускать следующую службу.

2. У меня нет файла docker-compose. Я ищу образец файла, который будет запускать все эти приложения.

Ответ №1:

Cordite является хорошим примером этого с открытым исходным кодом. Это файл docker-compose.yml: https://gitlab.com/cordite/cordite/blob/master/test/docker-compose.yml

Это сценарий запуска: https://gitlab.com/cordite/cordite/-/blob/master/test/build_env.sh

Это пример шаблона «запустить службу и дождаться ее готовности»:

 docker-compose -p ${ENVIRONMENT_SLUG} up -d network-map
until docker-compose -p ${ENVIRONMENT_SLUG} logs network-map | grep -q "io.cordite.networkmap.NetworkMapApp - started"
do
    echo -e "waiting for network-map to start"
    sleep 5
done

 

Итак up , команда запускает службу, а затем скрипт bash считывает журналы из контейнера каждые 5 секунд и проверяет наличие io.cordite.networkmap.NetworkMapApp - started в журнале. Очевидно, вам нужно будет обновить то, что он ищет, в зависимости от того, какой образ docker вы запускаете.

Редактировать: некоторые вопросы, поднятые в автономном режиме:

«Как разместить cordapp или смонтировать cordapp?»

У вас есть 2 варианта: либо создайте свой собственный образ Docker, который является продолжением cordite, и поместите свои CorDapps в папку CorDapp. Или используйте монтирование тома, чтобы позволить запущенному контейнеру видеть ваши CorDapps (которые будут существовать на хосте). Подробности здесь https://hub.docker.com/r/cordite/cordite / В частности, вы можете смонтировать, /opt/corda/cordapps чтобы переопределить CorDapps.

«Как добавить мою службу springboot для каждого узла?»

Просто добавьте новые службы в файл docker-compose.yml, которые используют ваш докерный образ Springboot server. В примере docker-compose.yml есть 3 «обычных» узла emea , apac и amer . Я предполагаю, что вы хотите создать новую службу Springboot для каждого из них.

Комментарии:

1. Я загрузил сеть с помощью инструмента сетевой загрузки и соответствующим образом упорядочил папки (проверьте папку nodes). Ссылка на Git Я подготовил сценарий docker-compose и shell в соответствии с предоставленной вами ссылкой. Я внес некоторые изменения для монтирования cordapps. После выполнения сценария оболочки Postgre, Cordite NMS и нотариальные узлы успешно запущены. Но я получаю сообщение об ошибке при выполнении приведенной ниже команды docker exec ${NODE_ID} rm network-parameters Ошибка: «ресурс занят»

2. Боюсь, я не использую инструмент сетевой загрузки, который я использую. Node.conf создается скриптом docker entrypoint, а сертификаты создаются обычным «производственным» способом, т.Е. Они генерируются швейцаром и хранятся вместе с узлом.