diff --git a/projects/fly-beetle/Dockerfile b/projects/fly-beetle/Dockerfile new file mode 100644 index 0000000..44e627e --- /dev/null +++ b/projects/fly-beetle/Dockerfile @@ -0,0 +1,5 @@ +FROM ghcr.io/tigerbeetle/tigerbeetle:latest + +COPY entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] +EXPOSE 5000 diff --git a/projects/fly-beetle/Readme.md b/projects/fly-beetle/Readme.md new file mode 100644 index 0000000..fe1f459 --- /dev/null +++ b/projects/fly-beetle/Readme.md @@ -0,0 +1,28 @@ +# fly-beetle + +Teaching the tigerbeetle to fly. + +Prerequisites: +- [fly.io cli](https://fly.io/docs/hands-on/install-flyctl/) +- An account at fly.io + +```bash +# Init a new application (But don't deploy it yet) +fly launch --no-deploy + +# Need to allocate a static ip for the beetle +fly ip allocate-v4 + +# Ensure that the volume is at least 2GB +fly volumes extend --size 2 + +# The beetle is a hungry hippo +fly scale memory 4608 +fly scale vm shared-cpu-4x + +# Deploy the beetle +fly deploy + +# Connect to the beetle +./tigerbeetle client --cluster=0 --addresses=[insert ip here]:5000 +``` \ No newline at end of file diff --git a/projects/fly-beetle/entrypoint.sh b/projects/fly-beetle/entrypoint.sh new file mode 100755 index 0000000..a72f623 --- /dev/null +++ b/projects/fly-beetle/entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh -eu +rm /data/tigerbeetle + +if ! [ -e /data/tigerbeetle ]; then + /tigerbeetle format --cluster=0 --replica=0 --replica-count=1 /data/tigerbeetle +fi +exec /tigerbeetle start --cache-grid=512mb --addresses=0.0.0.0:5000 /data/tigerbeetle + diff --git a/projects/fly-beetle/fly.toml b/projects/fly-beetle/fly.toml new file mode 100644 index 0000000..eabcb47 --- /dev/null +++ b/projects/fly-beetle/fly.toml @@ -0,0 +1,19 @@ +# fly.toml app configuration file generated for beetle on 2023-11-08T15:02:48-06:00 +# +# See https://fly.io/docs/reference/configuration/ for information about how to use this file. +# + +app = "beetle" +primary_region = "qro" + +[build] + +[[mounts]] + source = "myapp_data" + destination = "/data" + +[[services]] + internal_port = 5000 + protocol = "tcp" + [[services.ports]] + port = "5000"