diff --git a/.gitignore b/.gitignore index 13bbe5b9112f9828a4f0eae28e0eb34e5fdb58d1..4c6249f9a716a1969888a084da3517b44c25ddf3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ .idea/ - +volumes/ diff --git a/README.md b/README.md index b91668584791e04ff47e7a3d24eef9d8ce2c39d9..e0534d746d1aa9e7b26212ebdbf9b03e836c77e4 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,19 @@ https://github.com/decentralized-identity/universal-resolver/blob/main/.env The services access DID resolver from their containers as `uni-resolver-web:8080` +### MongoDB + +MongoDB is used to store policies and act as a synchronization point and single +source of truth for the current policy state. + +In the workspace it's initialized with the script +[mongo-init.js](./mongo/docker-entrypoint-initdb.d/mongo-init.js) to +populate a collection with some policies suitable for local development. + +The server can be reached at `localhost:27017` from your machine. +The services access MongoDB from their containers as `mongo:27017`. + +> Because of some license requirements, we're using MongoDB 3.6. ### Redis diff --git a/docker-compose.yml b/docker-compose.yml index 3aef873dc8ce56089dd43f28483b2392f37cf52a..8b0fbbd0783336e4eb316a4ddd6de7d5fab96e95 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,6 +12,8 @@ services: - ./env/policy.env ports: - "8081:8080" + depends_on: + - mongo task: container_name: task @@ -59,3 +61,17 @@ services: container_name: redis ports: - "6379:6379" + + mongo: + container_name: mongo + image: mongo:3.6 + environment: + MONGO_INITDB_DATABASE: policy + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: root + ports: + - "27017:27017" + volumes: + - ./mongo/docker-entrypoint-initdb.d/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro + - ./volumes/mongodb:/data/db + diff --git a/env/policy.env b/env/policy.env index bbc58995c60f7bf025a166bb5f02d9de0805e9c6..60ce19185dca214b2954b15a0b528146da74d8b5 100644 --- a/env/policy.env +++ b/env/policy.env @@ -1,3 +1,4 @@ +LOG_LEVEL="debug" HTTP_HOST="" HTTP_PORT="8080" HTTP_IDLE_TIMEOUT="120s" @@ -7,4 +8,9 @@ REDIS_ADDR="redis:6379" REDIS_USER="" REDIS_PASS="" REDIS_DB=1 -REDIS_EXPIRATION="1h" \ No newline at end of file +REDIS_EXPIRATION="1h" +MONGO_ADDR="mongodb://mongo:27017/policy?authSource=admin" +MONGO_USER="root" +MONGO_PASS="root" +MONGO_DBNAME="policy" +MONGO_COLLECTION="policies" \ No newline at end of file diff --git a/mongo/docker-entrypoint-initdb.d/mongo-init.js b/mongo/docker-entrypoint-initdb.d/mongo-init.js new file mode 100644 index 0000000000000000000000000000000000000000..78642cf320b0d4441e4bc86b76b38a56625ae2cb --- /dev/null +++ b/mongo/docker-entrypoint-initdb.d/mongo-init.js @@ -0,0 +1,19 @@ +b = db.getSiblingDB('policy'); +db.createCollection('policies'); +db.policies.insertMany( + [ + { + filename: "example_1.0.rego", + name: "example", + group: "example", + version: "1.0", + locked: false, + lastUpdate: new Date(), + rego: `package gaiax + + default result = {} + + result = {"taskID":123}` + }, + ] +);