From fbe7c49fb3c702aed5eeeef5df747e2ff836424f Mon Sep 17 00:00:00 2001 From: OsamaRab3 Date: Fri, 10 Oct 2025 09:00:12 +0300 Subject: [PATCH 1/2] feat: add MySQL database support for CA Signed-off-by: OsamaRab3 --- docs/schema.json | 3 ++- ...1chaincode-peer-dev-mode.json.test.ts.snap | 24 +++++++++++++++-- ...fig-hlf2-1org-1chaincode.json.test.ts.snap | 24 +++++++++++++++-- ...rg-2chaincode-raft-ccaas.json.test.ts.snap | 24 +++++++++++++++-- ...2chaincodes-private-data.yaml.test.ts.snap | 24 +++++++++++++++-- ...2-2orgs-2chaincodes-raft.yaml.test.ts.snap | 24 +++++++++++++++-- ...1chaincode-raft-explorer.json.test.ts.snap | 24 +++++++++++++++-- ...ig-hlf3-1orgs-1chaincode.json.test.ts.snap | 24 +++++++++++++++-- ...lf3-bft-1orgs-1chaincode.json.test.ts.snap | 24 +++++++++++++++-- e2e/__snapshots__/schema.test.ts.snap | 1 + .../fabric-docker/snapshot-scripts.sh | 27 +++++++++++++++++-- 11 files changed, 204 insertions(+), 19 deletions(-) diff --git a/docs/schema.json b/docs/schema.json index 8d763b870..898169e1d 100644 --- a/docs/schema.json +++ b/docs/schema.json @@ -178,7 +178,8 @@ "type": "string", "enum": [ "sqlite", - "postgres" + "postgres", + "mysql" ] } } diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap index 549ebe203..51343684a 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap @@ -3346,6 +3346,11 @@ __getCAPostgresNodes() { " } +__getCAMySQLNodes() { + echo " + " +} + __createSnapshot() { cd "$FABLO_NETWORK_ROOT/.." backup_dir="\${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}" @@ -3365,11 +3370,17 @@ __createSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Saving state of $node..." + echo "Saving state of $node (PostgreSQL)..." mkdir -p "$backup_dir/$node/pg-data" docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done + for node in $(__getCAMySQLNodes); do + echo "Saving state of $node (MySQL)..." + mkdir -p "$backup_dir/$node/mysql-data" + docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + done + for node in $(__getOrdererAndPeerNodes); do echo "Saving state of $node..." docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/" @@ -3405,7 +3416,16 @@ __cloneSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Restoring $node..." + echo "Restoring $node (PostgreSQL)..." + if [ ! -d "$node" ]; then + echo "Warning: Cannot restore '$node', directory does not exist!" + else + docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql" + fi + done + + for node in $(__getCAMySQLNodes); do + echo "Restoring $node (MySQL)..." if [ ! -d "$node" ]; then echo "Warning: Cannot restore '$node', directory does not exist!" else diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap index 19afa8f72..c7c69e873 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap @@ -3416,6 +3416,11 @@ __getCAPostgresNodes() { " } +__getCAMySQLNodes() { + echo " + " +} + __createSnapshot() { cd "$FABLO_NETWORK_ROOT/.." backup_dir="\${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}" @@ -3435,11 +3440,17 @@ __createSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Saving state of $node..." + echo "Saving state of $node (PostgreSQL)..." mkdir -p "$backup_dir/$node/pg-data" docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done + for node in $(__getCAMySQLNodes); do + echo "Saving state of $node (MySQL)..." + mkdir -p "$backup_dir/$node/mysql-data" + docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + done + for node in $(__getOrdererAndPeerNodes); do echo "Saving state of $node..." docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/" @@ -3475,7 +3486,16 @@ __cloneSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Restoring $node..." + echo "Restoring $node (PostgreSQL)..." + if [ ! -d "$node" ]; then + echo "Warning: Cannot restore '$node', directory does not exist!" + else + docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql" + fi + done + + for node in $(__getCAMySQLNodes); do + echo "Restoring $node (MySQL)..." if [ ! -d "$node" ]; then echo "Warning: Cannot restore '$node', directory does not exist!" else diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap index 25dc83f2e..9235ba442 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap @@ -3559,6 +3559,11 @@ __getCAPostgresNodes() { " } +__getCAMySQLNodes() { + echo " + " +} + __createSnapshot() { cd "$FABLO_NETWORK_ROOT/.." backup_dir="\${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}" @@ -3578,11 +3583,17 @@ __createSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Saving state of $node..." + echo "Saving state of $node (PostgreSQL)..." mkdir -p "$backup_dir/$node/pg-data" docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done + for node in $(__getCAMySQLNodes); do + echo "Saving state of $node (MySQL)..." + mkdir -p "$backup_dir/$node/mysql-data" + docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + done + for node in $(__getOrdererAndPeerNodes); do echo "Saving state of $node..." docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/" @@ -3618,7 +3629,16 @@ __cloneSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Restoring $node..." + echo "Restoring $node (PostgreSQL)..." + if [ ! -d "$node" ]; then + echo "Warning: Cannot restore '$node', directory does not exist!" + else + docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql" + fi + done + + for node in $(__getCAMySQLNodes); do + echo "Restoring $node (MySQL)..." if [ ! -d "$node" ]; then echo "Warning: Cannot restore '$node', directory does not exist!" else diff --git a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap index c61c8714f..270b0ce54 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap @@ -4370,6 +4370,11 @@ __getCAPostgresNodes() { " } +__getCAMySQLNodes() { + echo " + " +} + __createSnapshot() { cd "$FABLO_NETWORK_ROOT/.." backup_dir="\${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}" @@ -4389,11 +4394,17 @@ __createSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Saving state of $node..." + echo "Saving state of $node (PostgreSQL)..." mkdir -p "$backup_dir/$node/pg-data" docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done + for node in $(__getCAMySQLNodes); do + echo "Saving state of $node (MySQL)..." + mkdir -p "$backup_dir/$node/mysql-data" + docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + done + for node in $(__getOrdererAndPeerNodes); do echo "Saving state of $node..." docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/" @@ -4429,7 +4440,16 @@ __cloneSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Restoring $node..." + echo "Restoring $node (PostgreSQL)..." + if [ ! -d "$node" ]; then + echo "Warning: Cannot restore '$node', directory does not exist!" + else + docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql" + fi + done + + for node in $(__getCAMySQLNodes); do + echo "Restoring $node (MySQL)..." if [ ! -d "$node" ]; then echo "Warning: Cannot restore '$node', directory does not exist!" else diff --git a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap index 9cda79280..c2a3e9b4a 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap @@ -6270,6 +6270,11 @@ __getCAPostgresNodes() { " } +__getCAMySQLNodes() { + echo " + " +} + __createSnapshot() { cd "$FABLO_NETWORK_ROOT/.." backup_dir="\${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}" @@ -6289,11 +6294,17 @@ __createSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Saving state of $node..." + echo "Saving state of $node (PostgreSQL)..." mkdir -p "$backup_dir/$node/pg-data" docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done + for node in $(__getCAMySQLNodes); do + echo "Saving state of $node (MySQL)..." + mkdir -p "$backup_dir/$node/mysql-data" + docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + done + for node in $(__getOrdererAndPeerNodes); do echo "Saving state of $node..." docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/" @@ -6329,7 +6340,16 @@ __cloneSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Restoring $node..." + echo "Restoring $node (PostgreSQL)..." + if [ ! -d "$node" ]; then + echo "Warning: Cannot restore '$node', directory does not exist!" + else + docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql" + fi + done + + for node in $(__getCAMySQLNodes); do + echo "Restoring $node (MySQL)..." if [ ! -d "$node" ]; then echo "Warning: Cannot restore '$node', directory does not exist!" else diff --git a/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap index 502978e18..8595e26e8 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap @@ -6844,6 +6844,11 @@ __getCAPostgresNodes() { " } +__getCAMySQLNodes() { + echo " + " +} + __createSnapshot() { cd "$FABLO_NETWORK_ROOT/.." backup_dir="\${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}" @@ -6863,11 +6868,17 @@ __createSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Saving state of $node..." + echo "Saving state of $node (PostgreSQL)..." mkdir -p "$backup_dir/$node/pg-data" docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done + for node in $(__getCAMySQLNodes); do + echo "Saving state of $node (MySQL)..." + mkdir -p "$backup_dir/$node/mysql-data" + docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + done + for node in $(__getOrdererAndPeerNodes); do echo "Saving state of $node..." docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/" @@ -6903,7 +6914,16 @@ __cloneSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Restoring $node..." + echo "Restoring $node (PostgreSQL)..." + if [ ! -d "$node" ]; then + echo "Warning: Cannot restore '$node', directory does not exist!" + else + docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql" + fi + done + + for node in $(__getCAMySQLNodes); do + echo "Restoring $node (MySQL)..." if [ ! -d "$node" ]; then echo "Warning: Cannot restore '$node', directory does not exist!" else diff --git a/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap index 67d53749c..02f2e86ec 100644 --- a/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap @@ -3794,6 +3794,11 @@ __getCAPostgresNodes() { " } +__getCAMySQLNodes() { + echo " + " +} + __createSnapshot() { cd "$FABLO_NETWORK_ROOT/.." backup_dir="\${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}" @@ -3813,11 +3818,17 @@ __createSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Saving state of $node..." + echo "Saving state of $node (PostgreSQL)..." mkdir -p "$backup_dir/$node/pg-data" docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done + for node in $(__getCAMySQLNodes); do + echo "Saving state of $node (MySQL)..." + mkdir -p "$backup_dir/$node/mysql-data" + docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + done + for node in $(__getOrdererAndPeerNodes); do echo "Saving state of $node..." docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/" @@ -3853,7 +3864,16 @@ __cloneSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Restoring $node..." + echo "Restoring $node (PostgreSQL)..." + if [ ! -d "$node" ]; then + echo "Warning: Cannot restore '$node', directory does not exist!" + else + docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql" + fi + done + + for node in $(__getCAMySQLNodes); do + echo "Restoring $node (MySQL)..." if [ ! -d "$node" ]; then echo "Warning: Cannot restore '$node', directory does not exist!" else diff --git a/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap index fc0723c63..5e11436cd 100644 --- a/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap @@ -3818,6 +3818,11 @@ __getCAPostgresNodes() { " } +__getCAMySQLNodes() { + echo " + " +} + __createSnapshot() { cd "$FABLO_NETWORK_ROOT/.." backup_dir="\${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}" @@ -3837,11 +3842,17 @@ __createSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Saving state of $node..." + echo "Saving state of $node (PostgreSQL)..." mkdir -p "$backup_dir/$node/pg-data" docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done + for node in $(__getCAMySQLNodes); do + echo "Saving state of $node (MySQL)..." + mkdir -p "$backup_dir/$node/mysql-data" + docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + done + for node in $(__getOrdererAndPeerNodes); do echo "Saving state of $node..." docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/" @@ -3877,7 +3888,16 @@ __cloneSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Restoring $node..." + echo "Restoring $node (PostgreSQL)..." + if [ ! -d "$node" ]; then + echo "Warning: Cannot restore '$node', directory does not exist!" + else + docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql" + fi + done + + for node in $(__getCAMySQLNodes); do + echo "Restoring $node (MySQL)..." if [ ! -d "$node" ]; then echo "Warning: Cannot restore '$node', directory does not exist!" else diff --git a/e2e/__snapshots__/schema.test.ts.snap b/e2e/__snapshots__/schema.test.ts.snap index 7496f9c96..2d001f67b 100644 --- a/e2e/__snapshots__/schema.test.ts.snap +++ b/e2e/__snapshots__/schema.test.ts.snap @@ -393,6 +393,7 @@ exports[`schema should match snapshot 1`] = ` "enum": [ "sqlite", "postgres", + "mysql", ], "title": "Database", "type": "string", diff --git a/src/setup-docker/templates/fabric-docker/snapshot-scripts.sh b/src/setup-docker/templates/fabric-docker/snapshot-scripts.sh index 8ba0c6486..70ca055ac 100644 --- a/src/setup-docker/templates/fabric-docker/snapshot-scripts.sh +++ b/src/setup-docker/templates/fabric-docker/snapshot-scripts.sh @@ -29,6 +29,14 @@ __getCAPostgresNodes() { " } +__getCAMySQLNodes() { + echo " + <%_ orgs.filter((org) => org.ca.db === 'mysql').forEach((org) => { _%> + db.<%= org.ca.address %> + <%_ }) _%> + " +} + __createSnapshot() { cd "$FABLO_NETWORK_ROOT/.." backup_dir="${1:-"snapshot-$(date -u +"%Y%m%d%H%M%S")"}" @@ -48,11 +56,17 @@ __createSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Saving state of $node..." + echo "Saving state of $node (PostgreSQL)..." mkdir -p "$backup_dir/$node/pg-data" docker exec "$node" pg_dump -c --if-exists -U postgres fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done + for node in $(__getCAMySQLNodes); do + echo "Saving state of $node (MySQL)..." + mkdir -p "$backup_dir/$node/mysql-data" + docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver > "$backup_dir/$node/fabriccaserver.sql" + done + for node in $(__getOrdererAndPeerNodes); do echo "Saving state of $node..." docker cp "$node:/var/hyperledger/production/" "$backup_dir/$node/" @@ -88,7 +102,16 @@ __cloneSnapshot() { done for node in $(__getCAPostgresNodes); do - echo "Restoring $node..." + echo "Restoring $node (PostgreSQL)..." + if [ ! -d "$node" ]; then + echo "Warning: Cannot restore '$node', directory does not exist!" + else + docker cp "./$node/fabriccaserver.sql" "$node:/docker-entrypoint-initdb.d/fabriccaserver.sql" + fi + done + + for node in $(__getCAMySQLNodes); do + echo "Restoring $node (MySQL)..." if [ ! -d "$node" ]; then echo "Warning: Cannot restore '$node', directory does not exist!" else From 54511da29f4b341cb7b681d66f3b1d3b7ca3571f Mon Sep 17 00:00:00 2001 From: OsamaRab3 Date: Mon, 17 Nov 2025 10:05:58 +0200 Subject: [PATCH 2/2] update test-04 to verify MySQL db instead of PostgreSQL Signed-off-by: OsamaRab3 --- .../docker/test-04-v3-snapshot-ccaas.sh | 2 +- e2e/__snapshots__/extendConfig.test.ts.snap | 44 +++++++++---------- ...1chaincode-peer-dev-mode.json.test.ts.snap | 2 +- ...fig-hlf2-1org-1chaincode.json.test.ts.snap | 2 +- ...rg-2chaincode-raft-ccaas.json.test.ts.snap | 27 ++++++------ ...2chaincodes-private-data.yaml.test.ts.snap | 2 +- ...2-2orgs-2chaincodes-raft.yaml.test.ts.snap | 2 +- ...1chaincode-raft-explorer.json.test.ts.snap | 2 +- ...ig-hlf3-1orgs-1chaincode.json.test.ts.snap | 2 +- ...lf3-bft-1orgs-1chaincode.json.test.ts.snap | 2 +- ...onfig-hlf3-1org-2chaincode-raft-ccaas.json | 2 +- .../fabric-docker/docker-compose.yaml | 29 ++++++++++++ .../fabric-docker/snapshot-scripts.sh | 2 +- 13 files changed, 75 insertions(+), 45 deletions(-) diff --git a/e2e-network/docker/test-04-v3-snapshot-ccaas.sh b/e2e-network/docker/test-04-v3-snapshot-ccaas.sh index ebe9f8de5..424c3be53 100755 --- a/e2e-network/docker/test-04-v3-snapshot-ccaas.sh +++ b/e2e-network/docker/test-04-v3-snapshot-ccaas.sh @@ -51,7 +51,7 @@ networkUp # check if all nodes are ready waitForContainer "orderer0.group1.orderer.example.com" "Starting Raft node channel=my-channel1" -waitForContainer "db.ca.org1.example.com" "database system is ready to accept connections" +waitForContainer "db.ca.org1.example.com" "ready for connections" waitForContainer "ca.org1.example.com" "Listening on https://0.0.0.0:7054" waitForContainer "couchdb.peer0.org1.example.com" "Apache CouchDB has started. Time to relax." waitForContainer "peer0.org1.example.com" "Joining gossip network of channel my-channel1 with 1 organizations" diff --git a/e2e/__snapshots__/extendConfig.test.ts.snap b/e2e/__snapshots__/extendConfig.test.ts.snap index 68cf83f55..bfd3b68a2 100644 --- a/e2e/__snapshots__/extendConfig.test.ts.snap +++ b/e2e/__snapshots__/extendConfig.test.ts.snap @@ -9216,7 +9216,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -9358,7 +9358,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -9447,7 +9447,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -9547,7 +9547,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -9689,7 +9689,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -9778,7 +9778,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -9877,7 +9877,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -10019,7 +10019,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -10105,7 +10105,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -10247,7 +10247,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -10490,7 +10490,7 @@ exports[`extend config samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -12505,7 +12505,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -12647,7 +12647,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -12736,7 +12736,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -12836,7 +12836,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -12978,7 +12978,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -13067,7 +13067,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -13166,7 +13166,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -13308,7 +13308,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -13394,7 +13394,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -13536,7 +13536,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, @@ -13779,7 +13779,7 @@ exports[`extend config samples/invalid-fablo-config.json 1`] = ` "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "postgres", + "db": "mysql", "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap index 48627424b..0fa009203 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap @@ -3465,7 +3465,7 @@ __createSnapshot() { for node in $(__getCAMySQLNodes); do echo "Saving state of $node (MySQL)..." mkdir -p "$backup_dir/$node/mysql-data" - docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done for node in $(__getOrdererAndPeerNodes); do diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap index 34eba8ad2..8de514744 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap @@ -3526,7 +3526,7 @@ __createSnapshot() { for node in $(__getCAMySQLNodes); do echo "Saving state of $node (MySQL)..." mkdir -p "$backup_dir/$node/mysql-data" - docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done for node in $(__getOrdererAndPeerNodes); do diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap index 180a84db0..007ead22f 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap @@ -27,7 +27,7 @@ exports[`samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json should create "domain": "org1.example.com" }, "ca": { - "db": "postgres" + "db": "mysql" }, "peer": { "instances": 1, @@ -2181,8 +2181,8 @@ services: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - FABRIC_CA_SERVER_TLS_ENABLED=true - FABRIC_CA_SERVER_DB_TLS_ENABLED=false - - FABRIC_CA_SERVER_DB_TYPE=postgres - - FABRIC_CA_SERVER_DB_DATASOURCE=host=db.ca.org1.example.com port=5432 user=postgres password=caDbPass12345 dbname=fabriccaserver sslmode=disable + - FABRIC_CA_SERVER_DB_TYPE=mysql + - FABRIC_CA_SERVER_DB_DATASOURCE=root:caDbPass12345@tcp(db.ca.org1.example.com:3306)/fabriccaserver?parseTime=true ports: - 7040:7054 working_dir: /etc/hyperledger/fabric-ca-server @@ -2198,18 +2198,19 @@ services: db.ca.org1.example.com: container_name: db.ca.org1.example.com - image: postgres:\${FABRIC_CA_POSTGRES_VERSION} + image: mysql:\${FABRIC_CA_MYSQL_VERSION:-5.7} + command: --sql_mode="" environment: - - POSTGRES_PASSWORD=caDbPass12345 - - POSTGRES_USER=postgres - - POSTGRES_DB=fabriccaserver + - MYSQL_ROOT_PASSWORD=caDbPass12345 + - MYSQL_DATABASE=fabriccaserver healthcheck: - test: "pg_isready -h localhost -p 5432 -q -U postgres" + test: ["CMD", "sh", "-c", "MYSQL_PWD=$$MYSQL_ROOT_PASSWORD mysql -h localhost -u root -e 'SELECT 1' fabriccaserver"] interval: 5s timeout: 10s - retries: 7 + retries: 10 + start_period: 10s volumes: - - /var/lib/postgresql/data + - /var/lib/mysql networks: - basic @@ -3673,12 +3674,12 @@ __getCASQLiteNodes() { __getCAPostgresNodes() { echo " - db.ca.org1.example.com " } __getCAMySQLNodes() { echo " + db.ca.org1.example.com " } @@ -3709,7 +3710,7 @@ __createSnapshot() { for node in $(__getCAMySQLNodes); do echo "Saving state of $node (MySQL)..." mkdir -p "$backup_dir/$node/mysql-data" - docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done for node in $(__getOrdererAndPeerNodes); do @@ -3825,7 +3826,7 @@ classDef subgraph_padding fill:none,stroke:none subgraph org1_example_com [Organization: Org1
org1.example.com] subgraph org1_example_com_padding [ ] direction RL - ca_org1_example_com([ca.org1.example.com
postgres]) + ca_org1_example_com([ca.org1.example.com
mysql]) peer0_org1_example_com[peer0.org1.example.com
CouchDb] end class org1_example_com_padding subgraph_padding diff --git a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap index c0d05e63c..3f7a1425b 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap @@ -4483,7 +4483,7 @@ __createSnapshot() { for node in $(__getCAMySQLNodes); do echo "Saving state of $node (MySQL)..." mkdir -p "$backup_dir/$node/mysql-data" - docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done for node in $(__getOrdererAndPeerNodes); do diff --git a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap index 79a5ad25d..e3a49acbb 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap @@ -6445,7 +6445,7 @@ __createSnapshot() { for node in $(__getCAMySQLNodes); do echo "Saving state of $node (MySQL)..." mkdir -p "$backup_dir/$node/mysql-data" - docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done for node in $(__getOrdererAndPeerNodes); do diff --git a/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap index 98580a0fc..31a1c0fdf 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap @@ -7045,7 +7045,7 @@ __createSnapshot() { for node in $(__getCAMySQLNodes); do echo "Saving state of $node (MySQL)..." mkdir -p "$backup_dir/$node/mysql-data" - docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done for node in $(__getOrdererAndPeerNodes); do diff --git a/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap index 87e4db865..efd38cb1d 100644 --- a/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap @@ -3923,7 +3923,7 @@ __createSnapshot() { for node in $(__getCAMySQLNodes); do echo "Saving state of $node (MySQL)..." mkdir -p "$backup_dir/$node/mysql-data" - docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done for node in $(__getOrdererAndPeerNodes); do diff --git a/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap index 05b3635f5..f0cfe3d98 100644 --- a/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap @@ -3948,7 +3948,7 @@ __createSnapshot() { for node in $(__getCAMySQLNodes); do echo "Saving state of $node (MySQL)..." mkdir -p "$backup_dir/$node/mysql-data" - docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" + docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done for node in $(__getOrdererAndPeerNodes); do diff --git a/samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json b/samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json index 9cb2b42d6..d999b7270 100644 --- a/samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json +++ b/samples/fablo-config-hlf3-1org-2chaincode-raft-ccaas.json @@ -24,7 +24,7 @@ "domain": "org1.example.com" }, "ca": { - "db": "postgres" + "db": "mysql" }, "peer": { "instances": 1, diff --git a/src/setup-docker/templates/fabric-docker/docker-compose.yaml b/src/setup-docker/templates/fabric-docker/docker-compose.yaml index a209bd53d..78a5e1489 100755 --- a/src/setup-docker/templates/fabric-docker/docker-compose.yaml +++ b/src/setup-docker/templates/fabric-docker/docker-compose.yaml @@ -20,6 +20,11 @@ services: - FABRIC_CA_SERVER_DB_TYPE=postgres - FABRIC_CA_SERVER_DB_DATASOURCE=host=db.<%= org.ca.address %> port=5432 user=postgres password=caDbPass12345 dbname=fabriccaserver sslmode=disable <%_ } _%> + <%_ if (org.ca.db === "mysql") { _%> + - FABRIC_CA_SERVER_DB_TLS_ENABLED=false + - FABRIC_CA_SERVER_DB_TYPE=mysql + - FABRIC_CA_SERVER_DB_DATASOURCE=root:caDbPass12345@tcp(db.<%= org.ca.address %>:3306)/fabriccaserver?parseTime=true + <%_ } _%> ports: - <%= org.ca.exposePort %>:<%= org.ca.port %> working_dir: /etc/hyperledger/fabric-ca-server @@ -32,6 +37,11 @@ services: db.<%= org.ca.address %>: condition: service_healthy <%_ } _%> + <%_ if (org.ca.db === "mysql") { _%> + depends_on: + db.<%= org.ca.address %>: + condition: service_healthy + <%_ } _%> networks: - basic @@ -53,6 +63,25 @@ services: networks: - basic <%_ } _%> + <%_ if (org.ca.db === "mysql") { _%> + db.<%= org.ca.address %>: + container_name: db.<%= org.ca.address %> + image: mysql:${FABRIC_CA_MYSQL_VERSION:-5.7} + command: --sql_mode="" + environment: + - MYSQL_ROOT_PASSWORD=caDbPass12345 + - MYSQL_DATABASE=fabriccaserver + healthcheck: + test: ["CMD", "sh", "-c", "MYSQL_PWD=$$MYSQL_ROOT_PASSWORD mysql -h localhost -u root -e 'SELECT 1' fabriccaserver"] + interval: 5s + timeout: 10s + retries: 10 + start_period: 10s + volumes: + - /var/lib/mysql + networks: + - basic + <%_ } _%> <%= org.cli.address %>: container_name: <%= org.cli.address %> diff --git a/src/setup-docker/templates/fabric-docker/snapshot-scripts.sh b/src/setup-docker/templates/fabric-docker/snapshot-scripts.sh index 70ca055ac..5f2f7f7ad 100644 --- a/src/setup-docker/templates/fabric-docker/snapshot-scripts.sh +++ b/src/setup-docker/templates/fabric-docker/snapshot-scripts.sh @@ -64,7 +64,7 @@ __createSnapshot() { for node in $(__getCAMySQLNodes); do echo "Saving state of $node (MySQL)..." mkdir -p "$backup_dir/$node/mysql-data" - docker exec "$node" mysqldump -u root -p "$MYSQL_ROOT_PASSWORD" --add-drop-database --databases fabriccaserver > "$backup_dir/$node/fabriccaserver.sql" + docker exec -e MYSQL_PWD=caDbPass12345 "$node" mysqldump -u root --add-drop-database --databases fabriccaserver >"$backup_dir/$node/fabriccaserver.sql" done for node in $(__getOrdererAndPeerNodes); do