This guide shows you how to use MongoDB , a source-available, cross-platform, document-oriented database program.
To run it, follow these steps:
Install the kraft
CLI tool and a container runtime engine, e.g. Docker.
Clone the examples
repository and cd
into the examples/mongodb/
directory:
git clone https://github.com/kraftcloud/examples
cd examples/mongodb/
Make sure to log into KraftCloud by setting your token and a metro close to you.
We use fra0
(Frankfurt, π©πͺ) in this guide:
# Set KraftCloud access token
export KRAFTCLOUD_TOKEN = token
# Set metro to Frankfurt, DE
export KRAFTCLOUD_METRO = fra0
When done, invoke the following command to deploy this application on KraftCloud:
kraft cloud deploy -p 27017 :27017/tls -M 1024 .
The output shows the instance URL and other details:
[ β ] Deployed successfully!
β
β ββββββββββ name : mongodb-6tiuu
β ββββββββββ uuid : 99779597-0bdb-4160-b902-a160c3ab4b2a
β βββββββββ state : running
β ββββββββββ fqdn : bold-brook-khkwv7of.fra0.kraft.host
β βββββββββ image : mongodb@sha256:e6ff5153f106e2d5e2a10881818cd1b90fe3ff1294ad80879b2239ffc52aff0e
β βββββ boot time : 82.41 ms
β ββββββββ memory : 1024 MiB
β β service group : bold-brook-khkwv7of
β ββ private fqdn : mongodb-6tiuu.internal
β ββββ private ip : 172.16.6.4
β ββββββββββ args : /usr/bin/mongod --bind_ip_all --nounixsocket
In this case, the instance name is mongodb-6tiuu
and the service name is bold-brook-khkwv7of
.
They are different for each run.
To test the deployment, first forward the port with the kraft cloud tunnel
command. Be sure to use the service group returned by the kraft cloud deploy
command:
kraft cloud tunnel bold-brook-khkwv7of 27017 :27017
Then, on a separate console, you can use the mongosh
client to connect to the server:
mongosh mongodb://localhost
You should see output similar to:
Current Mongosh Log ID: 65d75b96310f70e63565e0f1
Connecting to: mongodb://localhost/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.1.5
(node:79750) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
Using MongoDB: 6.0.13
Using Mongosh: 2.1.5
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.
test>
To disconnect, simply kill the tunnel
command with ctrl-C
Note
We use kraft cloud tunnel
only when a service doesnβt support TLS and is not HTTP-based (we use TLS/SNI to determine the correct instance to send traffic to).
Also note that tunnel
command is not needed when connecting via an instanceβs private IP/FQDN, ie, when a MongoDB instance is used as a backend to
another instance that acts as a frontend and which does support TLS.
At any point in time, you can list information about the instance:
kraft cloud instance list
NAME FQDN STATE CREATED AT IMAGE MEMORY ARGS BOOT TIME
mongodb-6tiuu bold-brook-khkwv7of.fra0.kraft... running 20 minutes ago mongodb@sha256:e6ff5153f106e2... 1.0 GiB /usr/bin/mongod --bind_ip_all... 82410us
When done, you can remove the instance:
kraft cloud instance remove mongodb-6tiuu
Customize your Application
To customize the application, update the files in the repository, listed below:
Kraftfile
: the KraftCloud specification, including command-line arguments
Dockerfile
: In case you need to add files to your instanceβs rootfs
spec : v0.6
runtime : mongo:latest
rootfs : ./Dockerfile
cmd : [ " /usr/bin/mongod " , " --bind_ip_all " , " --nounixsocket " ]
FROM debian:bookworm AS build
RUN set -xe; \
echo "Your code here"
FROM scratch
# Copy your files here
# COPY --from=build / /
Learn More
Use the --help
option for detailed information on using KraftCloud:
Or visit the CLI Reference .