From d9643ebd8deb45062056c15db85912b39d9304b1 Mon Sep 17 00:00:00 2001 From: Zomatree Date: Sun, 29 Mar 2026 05:37:43 +0100 Subject: [PATCH] feat: initiate mongo replset by default Signed-off-by: Zomatree --- Revolt.toml | 2 +- compose.yml | 19 +++++++++++++++++++ crates/core/config/Revolt.test.toml | 2 +- crates/core/config/Revolt.toml | 2 +- scripts/mongo-init.js | 5 +++++ 5 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 scripts/mongo-init.js diff --git a/Revolt.toml b/Revolt.toml index 7398ed53..c0a38819 100644 --- a/Revolt.toml +++ b/Revolt.toml @@ -4,7 +4,7 @@ [database] # MongoDB connection URL # Defaults to the container name specified in self-hosted -mongodb = "mongodb://127.0.0.1:27017" +mongodb = "mongodb://127.0.0.1:27017?directConnection=true&replicaSet=rs0" # Redis connection URL # Defaults to the container name specified in self-hosted redis = "redis://127.0.0.1:6379/" diff --git a/compose.yml b/compose.yml index a01c965e..d3275154 100644 --- a/compose.yml +++ b/compose.yml @@ -8,10 +8,29 @@ services: # MongoDB database: image: mongo + command: ["--replSet", "rs0", "--bind_ip_all"] ports: - "27017:27017" volumes: - ./.data/db:/data/db + - ./scripts/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro + healthcheck: + test: > + mongosh --quiet --eval " + try { + const status = rs.status(); + if (status.ok === 1 && status.members[0].stateStr === 'PRIMARY') { + quit(0); + } else { + quit(1); + } + } catch (e) { + quit(1); + }" + interval: 5s + timeout: 5s + retries: 10 + start_period: 10s ulimits: nofile: soft: 65536 diff --git a/crates/core/config/Revolt.test.toml b/crates/core/config/Revolt.test.toml index d7241d41..3004d69a 100644 --- a/crates/core/config/Revolt.test.toml +++ b/crates/core/config/Revolt.test.toml @@ -1,5 +1,5 @@ [database] -mongodb = "mongodb://localhost" +mongodb = "mongodb://localhost?directConnection=true&replicaSet=rs0" redis = "redis://localhost/" [rabbit] diff --git a/crates/core/config/Revolt.toml b/crates/core/config/Revolt.toml index 3bb33111..228b243e 100644 --- a/crates/core/config/Revolt.toml +++ b/crates/core/config/Revolt.toml @@ -4,7 +4,7 @@ disable_events_dont_use = false [database] # MongoDB connection URL # Defaults to the container name specified in self-hosted -mongodb = "mongodb://database" +mongodb = "mongodb://database?directConnection=true&replicaSet=rs0" # Redis connection URL # Defaults to the container name specified in self-hosted redis = "redis://redis/" diff --git a/scripts/mongo-init.js b/scripts/mongo-init.js new file mode 100644 index 00000000..0060f794 --- /dev/null +++ b/scripts/mongo-init.js @@ -0,0 +1,5 @@ +try { + rs.status(); +} catch (e) { + rs.initiate({ _id: "rs0", members: [{ _id: 0, host: "localhost:27017" }] }); +}