corda/docker/src/bash/example-mini-network.sh

87 lines
3.5 KiB
Bash
Executable File

#!/usr/bin/env bash
NODE_LIST=("dockerNode1" "dockerNode2" "dockerNode3")
NETWORK_NAME=mininet
CORDAPP_VERSION="4.12.4-RC01"
DOCKER_IMAGE_VERSION="corda-zulu-4.12.4-RC01"
mkdir cordapps
rm -f cordapps/*
wget -O cordapps/finance-contracts.jar https://software.r3.com/artifactory/list/corda-dev/net/corda/corda-finance-contracts/${CORDAPP_VERSION}/corda-finance-contracts-${CORDAPP_VERSION}.jar
wget -O cordapps/finance-workflows.jar https://software.r3.com/artifactory/list/corda-dev/net/corda/corda-finance-workflows/${CORDAPP_VERSION}/corda-finance-workflows-${CORDAPP_VERSION}.jar
wget -O cordapps/confidential-identities.jar https://software.r3.com/artifactory/list/corda-dev/net/corda/corda-confidential-identities/${CORDAPP_VERSION}/corda-confidential-identities-${CORDAPP_VERSION}.jar
rm keystore
keytool -genkey -noprompt \
-alias alias1 \
-dname "CN=totally_not_r3, OU=ID, O=definitely_not_r3, L=LONDON, S=LONDON, C=GB" \
-keystore keystore \
-storepass password \
-keypass password \
-keyalg EC \
-keysize 256 \
-sigalg SHA256withECDSA
jarsigner -keystore keystore -storepass password -keypass password cordapps/finance-workflows.jar alias1
jarsigner -keystore keystore -storepass password -keypass password cordapps/finance-contracts.jar alias1
jarsigner -keystore keystore -storepass password -keypass password cordapps/confidential-identities.jar alias1
for NODE in ${NODE_LIST[*]}
do
echo Building ${NODE} directory
rm -rf ${NODE}
mkdir ${NODE}
mkdir ${NODE}/config
mkdir ${NODE}/certificates
mkdir ${NODE}/logs
mkdir ${NODE}/persistence
done
docker rm -f netmap
docker network rm -f ${NETWORK_NAME}
docker network create --attachable ${NETWORK_NAME}
docker run -d \
-p 18080:8080 \
-p 10200:10200 \
--name netmap \
-e PUBLIC_ADDRESS=netmap \
--network="${NETWORK_NAME}" \
roastario/notary-and-network-map:latest
let EXIT_CODE=255
while [ ${EXIT_CODE} -gt 0 ]
do
sleep 2
echo "Waiting for network map to start"
curl --max-time 2 -s http://localhost:18080/network-map > /dev/null
let EXIT_CODE=$?
done
for NODE in ${NODE_LIST[*]}
do
wget -O ${NODE}/certificates/network-root-truststore.jks http://localhost:18080/truststore
docker rm -f ${NODE}
docker run -d \
-e MY_LEGAL_NAME="O=${NODE},L=Berlin,C=DE" \
-e MY_PUBLIC_ADDRESS="${NODE}" \
-e NETWORKMAP_URL="http://netmap:8080" \
-e DOORMAN_URL="http://netmap:8080" \
-e NETWORK_TRUST_PASSWORD="trustpass" \
-e MY_EMAIL_ADDRESS="${NODE}@r3.com" \
-e MY_RPC_PORT="1100"$(echo ${NODE} | sed 's/[^0-9]*//g') \
-e RPC_PASSWORD="testingPassword" \
-v $(pwd)/${NODE}/config:/etc/corda \
-v $(pwd)/${NODE}/certificates:/opt/corda/certificates \
-v $(pwd)/${NODE}/logs:/opt/corda/logs \
-v $(pwd)/${NODE}/persistence:/opt/corda/persistence \
-v $(pwd)/cordapps:/opt/corda/cordapps \
-p "1100"$(echo ${NODE} | sed 's/[^0-9]*//g'):"1100"$(echo ${NODE} | sed 's/[^0-9]*//g') \
-p "222$(echo ${NODE} | sed 's/[^0-9]*//g')":"222$(echo ${NODE} | sed 's/[^0-9]*//g')" \
-e CORDA_ARGS="--sshd --sshd-port=222$(echo ${NODE} | sed 's/[^0-9]*//g')" \
--name ${NODE} \
--network="${NETWORK_NAME}" \
corda/${DOCKER_IMAGE_VERSION}:latest config-generator --generic
done