Create a Docker Compose File
A docker-compose.yaml
file gives Docker Desktop instructions to spin up one or more containers together. It’s a great way to capture all the docker pull
, docker build
, and docker run
details. This file doesn’t replace Dockerfile but rather makes it much easier to use the parameters.
We'll use the singlestore/cluster-in-a-box
image built by SingleStoreDB and available on Docker Hub. Pre-installed in this image is the SingleStoreDB database engine and SingleStoreDB Studio. The minimum system requirements are disabled in this "cluster-in-a-box" configuration.
Create an empty directory and create a file named docker-compose.yaml
inside. Open this file in your favorite code editor and paste in this content:
version: '2'
services:
singlestore:
image: 'singlestore/cluster-in-a-box'
ports:
- 3306:3306
- 8080:8080
environment:
LICENSE: ${LICENSE}
START_AFTER_INIT: 'Y'
A YAML file is a text file that’s great for capturing our architecture setup. As with Python source code, white space is significant. YAML uses two spaces, not tabs. Double-check the YAML file to ensure each section is indented with exactly two spaces. If you have more or fewer spaces, or if you’re using tabs, you’ll get an error on startup.
Here are the sections in the docker-compose.yaml
file:
The services array lists all the containers that will start up together. A single container is defined here, named
singlestore
, which uses thesinglestore/cluster-in-a-box
image built by SingleStore.The Ports section identifies inbound traffic that will route into the container. Open port
3306
for the database engine and port8080
for Studio. If either of these ports are in use on your machine, change only the left port. For example, to connect from outside Docker to the database on port 3307 use3307:8080
.The first environment variable,
START_AFTER_INIT
, exists for legacy reasons. Without this environment variable, the container will spin up, initialize the SingleStoreDB cluster, and immediately stop. This is great for debugging, but not the point of this guide.The second environment variable,
LICENSE
, is the placeholder for the license you got fromportal.singlestore.com
. Don’t copy the license into place here – you’ll accidentally leak secrets into source control. Instead, this syntax notes that you’ll reference an environment variable set in the terminal.
In time, you could easily add you application, business intelligence (BI) dashboard, and other resources to this file. If you have an existing docker-compose.yaml
file, you can copy that content into place here too.
Save the file, and you’re ready to launch Docker.