Skip to content

Deploy a Dragonfly DB

This guides shows you how to deploy Dragonfly, a simple, performant, and cost-efficient in-memory data store.

To run it example, follow these steps:

  1. Install the kraft CLI tool and a container runtime engine, e.g. Docker.

  2. Clone the examples repository and cd into the examples/dragonflydb/ directory:

Terminal window
git clone https://github.com/kraftcloud/examples
cd examples/dragonflydb/

Make sure to log into Unikraft Cloud by setting your token and a metro close to you. We use fra0 (Frankfurt, πŸ‡©πŸ‡ͺ) in this guide:

Terminal window
# Set Unikraft Cloud access token
export UKC_TOKEN=token
# Set metro to Frankfurt, DE
export UKC_METRO=fra0

When done, invoke the following command to deploy this application on Unikraft Cloud:

Terminal window
kraft cloud deploy -p 443:6379 -M 512 .

The output shows the instance URL and other details:

Terminal window
[●] Deployed successfully!
β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ name: dragonflydb-10zgk
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ uuid: 6282ef0c-2161-494c-a3f3-2d16055096c2
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ state: running
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ url: https://dry-moon-x6bgl6c0.fra0.kraft.host
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ image: dragonflydb@sha256:21e6d3ff1f86292e14266bcf5c6e73d3b7a86a0ec4102c66a0961373af743f19
β”œβ”€β”€β”€β”€β”€ boot time: 28.74 ms
β”œβ”€β”€β”€β”€β”€β”€β”€β”€ memory: 512 MiB
β”œβ”€β”€β”€β”€β”€β”€β”€ service: dry-moon-x6bgl6c0
β”œβ”€β”€ private fqdn: dragonflydb-10zgk.internal
β”œβ”€β”€β”€β”€ private ip: 172.16.6.5
└────────── args: /usr/bin/dragonfly --maxmemory 256MiB

In this case, the instance name is dragonflydb-10zgk and the URL is https://dry-moon-x6bgl6c0.fra0.kraft.host. They are different for each run.

Use curl to query the Unikraft Cloud instance of Drangonfly.

Terminal window
curl https://dry-moon-x6bgl6c0.fra0.kraft.host
<!DOCTYPE html>
<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
<link href='https://fonts.googleapis.com/css?family=Roboto:400,300' rel='stylesheet'
type='text/css'>
<link rel='stylesheet' href='http://static.dragonflydb.io/data-plane/status_page.css'>
<script type="text/javascript" src="http://static.dragonflydb.io/data-plane/status_page.js"></script>
</head>
<body>
<div><img src='http://static.dragonflydb.io/data-plane/logo.png' width="160"/></div>
<div class='left_panel'></div>
<div class='styled_border'>
<div>Status:<span class='key_text'>OK</span></div>
<div>Started on:<span class='key_text'>1970-01-01T00:00:00</span></div>
<div>Uptime:<span class='key_text'>474611:3:38</span></div>
<div>Render Latency:<span class='key_text'>110 us</span></div>
</div>
</body>
<script>
var json_text1 = {"engine": { "keys": 0,"obj_mem_usage": 0,"table_load_factor": 0 },
"current-time": 1708599818};
document.querySelector('.left_panel').innerHTML = JsonToHTML(json_text1);
</script>
</html>

At any point in time, you can list information about the instance:

Terminal window
kraft cloud instance list
NAME FQDN STATE CREATED AT IMAGE MEMORY ARGS BOOT TIME
dragonflydb-10zgk dry-moon-x6bgl6c0.fra0.kraft.... running 1 minute ago dragonflydb@sha256:21e6d3... 512 MiB /usr/bin/dragonfly --maxmemor... 28740us

When done, you can remove the instance:

Terminal window
kraft cloud instance remove dragonflydb-10zgk

Customize your Application

To customize the application, update the files in the repository, listed below:

  • Kraftfile: the Unikraft Cloud specification, including command-line arguments
  • Dockerfile: In case you need to add files to your instance’s rootfs
spec: v0.6
runtime: dragonfly:latest
rootfs: ./Dockerfile
cmd: ["/usr/bin/dragonfly", "--maxmemory", "256MiB"]

Learn More

Use the --help option for detailed information on using Unikraft Cloud:

Terminal window
kraft cloud --help

Or visit the CLI Reference.