Merge pull request #2142 from bluewave-labs/fix/prod-docker
corrected script
This commit is contained in:
1 file changed
+14
-42
@@ -1,59 +1,31 @@
|
||||
function sleep(ms) {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
async function initReplicaSet() {
|
||||
function waitForPrimary() {
|
||||
while (true) {
|
||||
try {
|
||||
rs.initiate({
|
||||
_id: "rs0",
|
||||
members: [{ _id: 0, host: "localhost:27017" }],
|
||||
});
|
||||
print("Replica set initiated.");
|
||||
break;
|
||||
} catch (e) {
|
||||
print("Replica set initiation failed, retrying in 2s...");
|
||||
await sleep(2000);
|
||||
sleep(2000);
|
||||
}
|
||||
}
|
||||
|
||||
// Wait until the node becomes primary
|
||||
while (true) {
|
||||
try {
|
||||
const status = rs.status();
|
||||
if (status.myState === 1) {
|
||||
print("Node is now PRIMARY.");
|
||||
break;
|
||||
}
|
||||
} catch (e) {
|
||||
print("⏳ Waiting for PRIMARY state...");
|
||||
}
|
||||
await sleep(1000);
|
||||
}
|
||||
}
|
||||
|
||||
async function createAppUser() {
|
||||
const username = process.env.USERNAME_ENV_VAR;
|
||||
const password = process.env.PASSWORD_ENV_VAR;
|
||||
waitForPrimary();
|
||||
|
||||
if (!username || !password) {
|
||||
throw new Error("USERNAME_ENV_VAR or PASSWORD_ENV_VAR not set.");
|
||||
}
|
||||
// Switch to uptime_db
|
||||
db = db.getSiblingDB("uptime_db");
|
||||
|
||||
const dbName = "uptime_db";
|
||||
const userDb = db.getSiblingDB(dbName);
|
||||
// Create app user
|
||||
var username = _getEnv("USERNAME_ENV_VAR");
|
||||
var password = _getEnv("PASSWORD_ENV_VAR");
|
||||
|
||||
try {
|
||||
userDb.createUser({
|
||||
user: username,
|
||||
pwd: password,
|
||||
roles: [{ role: "readWrite", db: dbName }],
|
||||
});
|
||||
print(`✅ User '${username}' created successfully.`);
|
||||
} catch (e) {
|
||||
print(`⚠️ Failed to create user '${username}': ${e.message}`);
|
||||
}
|
||||
}
|
||||
db.createUser({
|
||||
user: username,
|
||||
pwd: password,
|
||||
roles: [{ role: "readWrite", db: "uptime_db" }],
|
||||
});
|
||||
|
||||
await initReplicaSet();
|
||||
await createAppUser();
|
||||
print("User '" + username + "' created successfully");
|
||||
Reference in new issue
Block a user