From 7191e9ab09882db864669d3fe0cc46c9e9026c32 Mon Sep 17 00:00:00 2001 From: Peter Vacho Date: Mon, 30 Dec 2024 15:34:03 +0100 Subject: [PATCH] Add a section on setting up MongoDB --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/README.md b/README.md index 25be095..926b8e5 100644 --- a/README.md +++ b/README.md @@ -185,3 +185,61 @@ variable. It works in the following way: `TRACE_LEVEL_FILTER="src.api.foo.foobar,src.api.bar.barfoo"` - When `TRACE_LEVEL_FILTER` starts with a `!` symbol, followed by a list of loggers, the root logger will be set to `TRACE` level, with the specified loggers being set to `DEBUG` level. + +### MongoDB + +As you probably noticed, the project uses MongoDB as the database. If you're not familiar with MongoDB, it's a NoSQL +database, which is very easy to use and set up. You can find more information about it on the [official MongoDB +website](https://www.mongodb.com/). + +To set up a MongoDB instance, you can either use the provided docker-compose file, in which case you don't need to do +anything, or set it up manually. For manual setup, you can follow the [official installation +guide](https://docs.mongodb.com/manual/installation/). + +#### Quick MongoDB setup + +If you just need a quick MonogDB instance that you can spin up during the development, I'd recommend using Docker. Note +that you don't need to follow the Docker installation for the entire project, e.g. using docker-compose, you can run the +project normally and just host the MongDB instance through Docker. To do this, simply run: + +```bash +sudo docker run -d --name mongodb \ + -e MONGO_INITDB_ROOT_USERNAME=root \ + -e MONGO_INITDB_ROOT_PASSWORD=test \ + -p 27017:27017 \ + mongo:latest +``` + +This will start a MongoDB instance with the root user having the username `root` and password `test`, using the admin +`authSource`. The instance will be available on port 27017, so you can use it with the following connection string: + +```dotenv +MONGODB_URI=mongodb://root:test@localhost:27017/my-cool-database?authSource=admin +``` + +Once you're done, you can stop the instance by running: + +```bash +sudo docker stop mongodb +``` + +To also remove the container, you can run: + +```bash +sudo docker remove mongodb +``` + +> [!NOTE] +> This MongoDB instance will not persist the data across runs. If you remove the container, all the data will be lost. +> If you need the data to persist, you can use a docker volume or a bind mount, as already explained in the +> [Docker](#docker) section. + +#### Quickly populate the database + +During the development, it's often useful to have some data in the database to work with. To quickly populate the +database with some, you can use the provided `populate_db.py` script. To run it, make sure you have activated the +virtual environment and then run: + +```bash +python populate_db.py +```