From a55f98f1b783f03ae6a66fb1263638616fe0414b Mon Sep 17 00:00:00 2001 From: Maximilian Walterskirchen Date: Sat, 23 Aug 2025 07:04:44 +0200 Subject: [PATCH] Add Typesense blueprint with Docker Compose setup and update meta.json (#275) - Introduced Typesense service with Docker Compose configuration. - Added Typesense template for environment variables and configuration. - Updated meta.json to include Typesense entry and formatted tags for consistency. Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> --- blueprints/typesense/docker-compose.yml | 14 ++++++++++++++ blueprints/typesense/template.toml | 12 ++++++++++++ blueprints/typesense/typesense.png | Bin 0 -> 14815 bytes meta.json | 15 +++++++++++++++ 4 files changed, 41 insertions(+) create mode 100644 blueprints/typesense/docker-compose.yml create mode 100644 blueprints/typesense/template.toml create mode 100644 blueprints/typesense/typesense.png diff --git a/blueprints/typesense/docker-compose.yml b/blueprints/typesense/docker-compose.yml new file mode 100644 index 00000000..ca3ac4a5 --- /dev/null +++ b/blueprints/typesense/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.8" +services: + typesense: + image: typesense/typesense:29.0 + restart: unless-stopped + environment: + - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} + - TYPESENSE_ENABLE_CORS=${TYPESENSE_ENABLE_CORS} + - TYPESENSE_DATA_DIR=/data + volumes: + - typesense-data:/data + +volumes: + typesense-data: diff --git a/blueprints/typesense/template.toml b/blueprints/typesense/template.toml new file mode 100644 index 00000000..cc2f8743 --- /dev/null +++ b/blueprints/typesense/template.toml @@ -0,0 +1,12 @@ +[variables] +main_domain = "${domain}" +api_key = "${password:16}" +enable_cors = "true" + +[config] +env = ["TYPESENSE_API_KEY=${api_key}", "TYPESENSE_ENABLE_CORS=${enable_cors}"] + +[[config.domains]] +serviceName = "typesense" +port = 8108 +host = "${main_domain}" diff --git a/blueprints/typesense/typesense.png b/blueprints/typesense/typesense.png new file mode 100644 index 0000000000000000000000000000000000000000..9f6d71734a8d34ffaf91b17a436560f4c5154c6e GIT binary patch literal 14815 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