From de0e9512de7143e54135073fb7d361bfa7423ac5 Mon Sep 17 00:00:00 2001 From: Matthew Lopez <73856503+MatthewL246@users.noreply.github.com> Date: Wed, 27 Dec 2023 23:03:12 -0500 Subject: [PATCH] Make the first-run scripts safe to run multiple times --- scripts/run-in-container/minio-init.sh | 10 +++++++--- scripts/run-in-container/mongodb-init.js | 22 ++++++++++++++++------ setup.sh | 4 ++-- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/scripts/run-in-container/minio-init.sh b/scripts/run-in-container/minio-init.sh index abcddad..4a920bb 100644 --- a/scripts/run-in-container/minio-init.sh +++ b/scripts/run-in-container/minio-init.sh @@ -11,8 +11,12 @@ mc admin info minio buckets="pn-cdn" -# Create buckets allow public access +# Create buckets and allow public access for bucket in $buckets; do - mc mb "minio/$bucket" - mc anonymous set download "minio/$bucket" + if ! mc ls "minio/$bucket"; then + mc mb "minio/$bucket" + mc anonymous set download "minio/$bucket" + else + echo "Bucket $bucket already exists. Skipping..." + fi done diff --git a/scripts/run-in-container/mongodb-init.js b/scripts/run-in-container/mongodb-init.js index 8a83a2b..81ab387 100644 --- a/scripts/run-in-container/mongodb-init.js +++ b/scripts/run-in-container/mongodb-init.js @@ -1,3 +1,13 @@ +try { + const status = rs.status(); + if (status.hasOwnProperty("myState") && status.myState == 1) { + print("Replica set is already initiated. Exiting..."); + quit(); + } +} catch (error) { + print("Replica set not initiated. Proceeding with initiation..."); +} + // Initiate the replica set. We need to set up the members like this because, by // default, the first member uses the host 127.0.0.1, which causes the other // servers to attempt to connect to their own loopback addresses. @@ -13,13 +23,13 @@ rs.initiate({ // Wait for the replica set to initiate while (rs.status().hasOwnProperty("myState") && rs.status().myState != 1) { - console.log("Waiting for replica set to initiate..."); - console.log(rs.status()); + print("Waiting for replica set to initiate..."); + printjson(rs.status()); sleep(1000); } // Log replica set configuration -console.log("Replica set configuration:"); -console.log(rs.conf()); -console.log("Replica set status:"); -console.log(rs.status()); +print("Replica set configuration:"); +printjson(rs.conf()); +print("Replica set status:"); +printjson(rs.status()); diff --git a/setup.sh b/setup.sh index ee92020..8c4b365 100755 --- a/setup.sh +++ b/setup.sh @@ -74,9 +74,9 @@ docker compose build stage "Setting up containers with first-run scripts." info "Setting up MongoDB container..." -./scripts/firstrun-mongodb-container.sh || warning "MongoDB container is already set up." +./scripts/firstrun-mongodb-container.sh info "Setting up MinIO container..." -./scripts/firstrun-minio-container.sh || warning "MinIO container is already set up." +./scripts/firstrun-minio-container.sh info "Setting up Pretendo account servers database..." ./scripts/update-account-servers-database.sh info "Setting up Pretendo Miiverse endpoints database..."