#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, а сертификаты создаются обычным «производственным» способом, т.Е. Они генерируются швейцаром и хранятся вместе с узлом.