From 05de6a623bea968abebbaeabe6f9beabe0b9071f Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 30 Mar 2025 21:27:16 -0600 Subject: [PATCH] Add Coral blueprint with Docker Compose and configuration files - Introduced Docker Compose setup for Coral service, including environment variables for MongoDB and Redis configuration. - Added logo for Coral. - Created template.toml for Coral with default variables for configuration. - Updated meta.json to include Coral with detailed description, logo, and relevant links. --- blueprints/coralproject/docker-compose.yml | 33 +++++++++++ blueprints/coralproject/logo.png | Bin 0 -> 16462 bytes blueprints/coralproject/template.toml | 20 +++++++ meta.json | 66 +++++++++++++++++++++ 4 files changed, 119 insertions(+) create mode 100644 blueprints/coralproject/docker-compose.yml create mode 100644 blueprints/coralproject/logo.png create mode 100644 blueprints/coralproject/template.toml diff --git a/blueprints/coralproject/docker-compose.yml b/blueprints/coralproject/docker-compose.yml new file mode 100644 index 00000000..f308098d --- /dev/null +++ b/blueprints/coralproject/docker-compose.yml @@ -0,0 +1,33 @@ +version: "3" + +services: + coral: + image: coralproject/talk:9.7.0 + ports: + - "3000" + environment: + - MONGODB_URI=${MONGODB_URI} + - REDIS_URI=${REDIS_URI} + - SIGNING_SECRET=${SIGNING_SECRET} + - NODE_ENV=production + depends_on: + - mongo + - redis + + mongo: + image: mongo:4 + environment: + - MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD} + - MONGO_INITDB_ROOT_USERNAME=${MONGO_USER} + volumes: + - mongo-data:/data/db + + redis: + image: redis:6 + command: redis-server --requirepass ${REDIS_PASSWORD} + volumes: + - redis-data:/data + +volumes: + mongo-data: + redis-data: \ No newline at end of file diff --git a/blueprints/coralproject/logo.png b/blueprints/coralproject/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef17ebb53c411ddc031db659f2161fad6ffe2d6 GIT binary patch literal 16462 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