From f086f821fa2fcc4dbb2c1a2fb19e0ece6c4cb2cd Mon Sep 17 00:00:00 2001
From: Felipe D'Abrantes <felidabrantes@gmail>
Date: Sat, 18 Mar 2023 15:08:47 +0000
Subject: [PATCH] Add mongo image to docker-compose

---
 .gitignore                                             |  2 ++
 .../feed-service/app/models/MongoDBClient.scala        | 10 +++++++---
 backend-services/feed-service/conf/application.conf    |  4 +++-
 backend-services/feed-service/conf/reference.conf      |  4 ++++
 docker-compose.yml                                     |  9 +++++++++
 5 files changed, 25 insertions(+), 4 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 backend-services/feed-service/conf/reference.conf

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..c20156c6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+# Docker Output
+/mongo
diff --git a/backend-services/feed-service/app/models/MongoDBClient.scala b/backend-services/feed-service/app/models/MongoDBClient.scala
index 80583bb3..bd44c198 100644
--- a/backend-services/feed-service/app/models/MongoDBClient.scala
+++ b/backend-services/feed-service/app/models/MongoDBClient.scala
@@ -1,6 +1,6 @@
 package models
 
-import com.typesafe.config.ConfigFactory
+import com.typesafe.config.{Config, ConfigFactory}
 
 import org.mongodb.scala.{MongoClient, MongoDatabase, MongoCollection, Document, FindObservable, Observer, Observable}
 import org.mongodb.scala.model.{Filters, Projections, Sorts}
@@ -18,7 +18,11 @@ import scala.util.{Success, Failure, Try}
  */
 class MongoDBClient {
     // Loads the default configuration
-    private val config = ConfigFactory.load()
+    private val applicationConfig: Config = ConfigFactory.load("application.conf")
+    private val referenceConfig: Config = ConfigFactory.parseResources("reference.conf")
+    private val config: Config = referenceConfig.withFallback(applicationConfig).resolve()
+
+    private val mongoUri = config.getString("mongodb.uri")
 
     // Connects to a MongoDB Client when class is constructed
     private var client: MongoClient = this.connect()
@@ -29,7 +33,7 @@ class MongoDBClient {
      * @return A MongoClient instance.
      */
     def connect(): MongoClient = {
-        MongoClient(config.getString("mongo.default.url"))
+        MongoClient(mongoUri)
     }
 
     /**
diff --git a/backend-services/feed-service/conf/application.conf b/backend-services/feed-service/conf/application.conf
index 48131680..852c11d6 100644
--- a/backend-services/feed-service/conf/application.conf
+++ b/backend-services/feed-service/conf/application.conf
@@ -1,2 +1,4 @@
+# Default Configuration File
+
 # MongoDB Connection Strings
-mongo.default.url="mongodb://localhost:27017/"
+mongodb.uri = "mongodb://localhost:27017/"
diff --git a/backend-services/feed-service/conf/reference.conf b/backend-services/feed-service/conf/reference.conf
new file mode 100644
index 00000000..1eba4d76
--- /dev/null
+++ b/backend-services/feed-service/conf/reference.conf
@@ -0,0 +1,4 @@
+# Configuration File to be replaced with environment variables, if present
+
+# MongoDB Connection Strings
+mongodb.uri = ${?MONGO_URI}
diff --git a/docker-compose.yml b/docker-compose.yml
index 17479baf..d354d3cd 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -7,3 +7,12 @@ services:
     restart: unless-stopped
     ports: 
      - "9001:9000"
+    environment:
+     - MONGO_URI=mongodb://feed-mongo:27017/
+
+  mongo:
+      image: mongo
+      container_name: feed-mongo
+      ports:
+       - "27017:27017"
+     
\ No newline at end of file
-- 
GitLab