From 6aec55763c4e3469b938c696ec3172db0ebda189 Mon Sep 17 00:00:00 2001 From: putrafajarh Date: Mon, 19 Oct 2026 21:27:26 +0700 Subject: [PATCH 1/4] feat: add the dragonfly cache preset Dragonfly is a Redis-compatible in-memory store, added as a cache preset next to valkey. It speaks the Redis protocol on 6379 inside the container and is published on 6381 so it coexists with the redis and valkey presets, and it wires the same REDIS_HOST, CACHE_STORE, SESSION_DRIVER and QUEUE_CONNECTION values into a linked site's .env. --- .github/logos/dragonfly.svg | 1 + README.md | 1 + schema/2/services/index.json | 10 ++++++++++ services/dragonfly.yaml | 21 +++++++++++++++++++++ services/index.json | 10 ++++++++++ 5 files changed, 43 insertions(+) create mode 100644 .github/logos/dragonfly.svg create mode 100644 services/dragonfly.yaml diff --git a/.github/logos/dragonfly.svg b/.github/logos/dragonfly.svg new file mode 100644 index 0000000..8785eb2 --- /dev/null +++ b/.github/logos/dragonfly.svg @@ -0,0 +1 @@ + diff --git a/README.md b/README.md index 923dffb..15e23c4 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,7 @@ All of it is data. None of it ships in the binary. | | Service | What it is | |:-:|---|---| | | `beanstalkd` | Beanstalkd work queue | +| | `dragonfly` | Dragonfly, the Redis-compatible cache (coexists with Redis) | | | `kafka` | Apache Kafka event streaming broker | | | `memcached` | Memcached in-memory cache | | | `mercure` | Mercure hub for server-sent events, the Symfony realtime transport | diff --git a/schema/2/services/index.json b/schema/2/services/index.json index 9bc2331..c385470 100644 --- a/schema/2/services/index.json +++ b/schema/2/services/index.json @@ -385,6 +385,16 @@ "icon": "cube", "color": "#6368c2" }, + { + "name": "dragonfly", + "description": "Dragonfly in-memory store (Redis-compatible)", + "family": "dragonfly", + "image": "ghcr.io/dragonflydb/dragonfly:v2.0.2", + "category": "cache", + "icon": "bolt", + "color": "#6d28d9", + "env_role": "redis" + }, { "name": "spamassassin", "description": "SpamAssassin scoring backend for the Mailpit catcher", diff --git a/services/dragonfly.yaml b/services/dragonfly.yaml new file mode 100644 index 0000000..de0f684 --- /dev/null +++ b/services/dragonfly.yaml @@ -0,0 +1,21 @@ +name: dragonfly +description: Dragonfly in-memory store (Redis-compatible) +family: dragonfly +env_role: redis +image: ghcr.io/dragonflydb/dragonfly:v2.0.2 +# Dragonfly speaks the Redis protocol on 6379 inside the container; it is +# published on 6381 so it can coexist with the redis and valkey presets. +ports: + - "6381:6379" +data_dir: /data +env_vars: + - REDIS_HOST=lerd-dragonfly + - REDIS_PORT=6379 + - REDIS_PASSWORD=null + - CACHE_STORE=redis + - SESSION_DRIVER=redis + - QUEUE_CONNECTION=redis +connection_url: redis://127.0.0.1:6381 +category: cache +color: "#6d28d9" +icon: bolt diff --git a/services/index.json b/services/index.json index 7e5c34c..76e8cfa 100644 --- a/services/index.json +++ b/services/index.json @@ -381,6 +381,16 @@ "category": "testing", "icon": "cube", "color": "#6368c2" + }, + { + "name": "dragonfly", + "description": "Dragonfly in-memory store (Redis-compatible)", + "family": "dragonfly", + "image": "ghcr.io/dragonflydb/dragonfly:v2.0.2", + "category": "cache", + "icon": "bolt", + "color": "#6d28d9", + "env_role": "redis" } ] } From ee44074e3910d30efe61836ed85acac13e2537bc Mon Sep 17 00:00:00 2001 From: George Dumitrescu Date: Mon, 19 Oct 2026 17:36:25 +0300 Subject: [PATCH 2/4] fix: cap dragonfly's threads so it starts on a many-core machine Dragonfly starts one io thread per core and refuses to run unless it has 256MiB for each, so on a 32 thread machine it asked for 8GiB, found less free and exited, and systemd gave up after five restarts. Two threads and a 1GiB cap are plenty for local work. The image is also pinned to an exact tag, so update_strategy: minor lets lerd offer the next release. --- services/dragonfly.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/dragonfly.yaml b/services/dragonfly.yaml index de0f684..b7cad8a 100644 --- a/services/dragonfly.yaml +++ b/services/dragonfly.yaml @@ -3,6 +3,11 @@ description: Dragonfly in-memory store (Redis-compatible) family: dragonfly env_role: redis image: ghcr.io/dragonflydb/dragonfly:v2.0.2 +update_strategy: minor +# Dragonfly starts one io thread per core and refuses to run unless it has +# 256MiB for each, so a many-core machine exits at start; two threads and a +# 1GiB cap are plenty for local work. The entrypoint prepends the binary. +exec: --proactor_threads=2 --maxmemory=1gb # Dragonfly speaks the Redis protocol on 6379 inside the container; it is # published on 6381 so it can coexist with the redis and valkey presets. ports: From a76d9ddd1635a4ae1b2983e2415c9f8d133a9411 Mon Sep 17 00:00:00 2001 From: putrafajarh Date: Mon, 19 Oct 2026 21:37:17 +0700 Subject: [PATCH 3/4] feat: give the dragonfly preset its own mark The preset now ships the Dragonfly dragonfly as a monochrome mark instead of the generic bolt glyph, with the wordmark removed so only the square logo is left, and the README logo is regenerated from it. --- .github/logos/dragonfly.svg | 2 +- services/dragonfly.svg | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 services/dragonfly.svg diff --git a/.github/logos/dragonfly.svg b/.github/logos/dragonfly.svg index 8785eb2..b7c8201 100644 --- a/.github/logos/dragonfly.svg +++ b/.github/logos/dragonfly.svg @@ -1 +1 @@ - + diff --git a/services/dragonfly.svg b/services/dragonfly.svg new file mode 100644 index 0000000..b5d16c7 --- /dev/null +++ b/services/dragonfly.svg @@ -0,0 +1 @@ + \ No newline at end of file From c5e1c16c45e37287cf78c7da5d86ee01e4dd4a77 Mon Sep 17 00:00:00 2001 From: George Dumitrescu Date: Mon, 19 Oct 2026 17:42:56 +0300 Subject: [PATCH 4/4] fix: paint dragonfly in its own brand purple The preset declared #6d28d9, a violet that is not in Dragonfly's logo. It now uses #5a3ee0, the purple the logo itself starts from, in the preset, both indexes and the README tile. --- .github/logos/dragonfly.svg | 2 +- schema/2/services/index.json | 2 +- services/dragonfly.yaml | 2 +- services/index.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/logos/dragonfly.svg b/.github/logos/dragonfly.svg index b7c8201..da32712 100644 --- a/.github/logos/dragonfly.svg +++ b/.github/logos/dragonfly.svg @@ -1 +1 @@ - + diff --git a/schema/2/services/index.json b/schema/2/services/index.json index c385470..e49d66c 100644 --- a/schema/2/services/index.json +++ b/schema/2/services/index.json @@ -392,7 +392,7 @@ "image": "ghcr.io/dragonflydb/dragonfly:v2.0.2", "category": "cache", "icon": "bolt", - "color": "#6d28d9", + "color": "#5a3ee0", "env_role": "redis" }, { diff --git a/services/dragonfly.yaml b/services/dragonfly.yaml index b7cad8a..6876f87 100644 --- a/services/dragonfly.yaml +++ b/services/dragonfly.yaml @@ -22,5 +22,5 @@ env_vars: - QUEUE_CONNECTION=redis connection_url: redis://127.0.0.1:6381 category: cache -color: "#6d28d9" +color: "#5a3ee0" icon: bolt diff --git a/services/index.json b/services/index.json index 76e8cfa..5618bbb 100644 --- a/services/index.json +++ b/services/index.json @@ -389,7 +389,7 @@ "image": "ghcr.io/dragonflydb/dragonfly:v2.0.2", "category": "cache", "icon": "bolt", - "color": "#6d28d9", + "color": "#5a3ee0", "env_role": "redis" } ]