From 8170ea07e233f4e6295bb56979a31343bd2b9e81 Mon Sep 17 00:00:00 2001
From: Lyuben Penkovski <lyuben.penkovski@vereign.com>
Date: Wed, 13 Apr 2022 16:57:22 +0300
Subject: [PATCH] Use MongoDB as a single node replica set

We need Mongo working as a RS because of the
change streams functionality which we use for
policy synchronization.
---
 docker-compose.yml                             | 7 +++++++
 env/policy.env                                 | 2 +-
 mongo/docker-entrypoint-initdb.d/mongo-init.js | 5 +++--
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/docker-compose.yml b/docker-compose.yml
index 46ba636..96e4c28 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -70,9 +70,16 @@ services:
     environment:
       MONGO_INITDB_ROOT_USERNAME: root
       MONGO_INITDB_ROOT_PASSWORD: root
+      MONGO_REPLICA_SET_NAME: rs0
     ports:
       - "27017:27017"
     volumes:
       - ./mongo/docker-entrypoint-initdb.d/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
       - ./volumes/mongodb:/data/db
+    healthcheck:
+      test: test $$(echo "rs.initiate().ok || rs.status().ok" | mongo -u $${MONGO_INITDB_ROOT_USERNAME} -p $${MONGO_INITDB_ROOT_PASSWORD} --quiet) -eq 1
+      interval: 10s
+      start_period: 30s
+    restart: on-failure
+    command: "--bind_ip_all --replSet rs0"
 
diff --git a/env/policy.env b/env/policy.env
index 60ce191..6c43372 100644
--- a/env/policy.env
+++ b/env/policy.env
@@ -9,7 +9,7 @@ REDIS_USER=""
 REDIS_PASS=""
 REDIS_DB=1
 REDIS_EXPIRATION="1h"
-MONGO_ADDR="mongodb://mongo:27017/policy?authSource=admin"
+MONGO_ADDR="mongodb://mongo:27017/policy?replicaSet=rs0&authSource=admin"
 MONGO_USER="root"
 MONGO_PASS="root"
 MONGO_DBNAME="policy"
diff --git a/mongo/docker-entrypoint-initdb.d/mongo-init.js b/mongo/docker-entrypoint-initdb.d/mongo-init.js
index d47d4a5..522da03 100644
--- a/mongo/docker-entrypoint-initdb.d/mongo-init.js
+++ b/mongo/docker-entrypoint-initdb.d/mongo-init.js
@@ -15,8 +15,9 @@ db.policies.insertMany(
                 1 == 1
             }
 
-			taskID := "deadbeef"
-        },
+            taskID := "0123456789abcdef"
+            `
+        }
     ]
 );
 
-- 
GitLab