This tutorial will show you how to run Gallium Data on your machine. Nothing will be installed permanently, it’s all done with Docker containers, so you can throw everything away when you’re done.

There are thfourree versions of this tutorial:

The concepts are the same, pick the one you're most familiar with.

This tutorial will take about 10 minutes, depending on your download speed.

You can also watch this tutorial as a 6-minute video below.

Step 1: Docker is required

This tutorial requires Docker. To verify that Docker is installed and running:

⇨ Run the following command from a command line:

docker version


You should see some output similar to this (the exact version numbers don't matter):

Client:
Cloud integration: v1.0.20
Version: 20.10.10
API version: 1.41

etc...

If you get an error message, you'll need to get Docker up and running before you can continue with this tutorial. Fortunately, there are lots of resources that can help you with that.

In particular, verify that you don't get a message saying something like This error may also indicate that the docker daemon is not running. If you get this message, you need to start the Docker daemon.

We’ll be starting three Docker containers — there are easier ways of doing this using e.g. Docker Compose or Kubernetes, but for this tutorial we want to make sure every component is visible and clearly understood.

We’ll be running all Docker containers in their own Docker network, so let’s create that network.

Run the following command:

docker network create gallium-net


The response should be a long string of letters and numbers, which you can safely ignore, something like:

9ef282f6d3cce819a etc...

If instead, you get:

Error response from daemon: network with name gallium-net already exists

that means this is not the first time you've run a Gallium Data tutorial -- that's fine, you can ignore that message.

Docker is now ready, let’s move on to the next step.

Step 2: Start the three Docker images

If this is your first time running this tutorial, note that it will download about 1GB of Docker images, which can take a while on slow connections.

1 - Start the database

Gallium Data is a database proxy, which is pointless without a database. So let’s start a database.

If you have a PostgreSQL instance already running, you could use that, but for this tutorial, we recommend you follow these instructions.

⇨ Run the following command:

docker run -d --rm --name postgres-gallium --network gallium-net -e POSTGRES_PASSWORD=Password1 -e PGDATA=/pgdata galliumdata/gallium-data-demo-postgres:4

This may take a minute as Docker downloads the image and starts it up. This image is simply the standard Postgres image, preloaded with a small sample database. There is nothing special about this image: Gallium Data can run with any Postgres database.


2 - Start Gallium Data

⇨ Run the following command:


docker run -d --rm --name gallium-data --network gallium-net -p 8089:8080 -e repository_location=/galliumdata/repo_postgres galliumdata/gallium-data-engine:1.3.0-1217

Again, this may take a minute. This is the standard Gallium Data image, we're running it without any options, which means it will use its default demo repository, which is set up for this tutorial. In the real world, you would typically use additional options to create your own repository.


3 - Start the database client

Finally we’ll also need a database client. Here we’ll be using Postgres pgAdmin, but any Postgres client would work equally well.

⇨ Run the following command:

docker run -d --rm --name pgadmin-gallium --network gallium-net -p 8088:80 galliumdata/gallium-data-demo-pgadmin:6

This is the standard Postgres pgAdmin image, preloaded with a server connection to Gallium Data.

So we now have three Docker containers running, speaking to each other like this:

Step 3: Take a look at the database

⇨ Connect to pgAdmin at: http://127.0.0.1:8088 with user name demo@galliumdata.com and password Password1

Note: it can take a few moments for pgAdmin to start -- if you get an error, try again after a moment.

In the top left corner, you'll see that a server has already been defined:

The gallium server is a connection to Gallium Data, which in turn is connected to Postgres. It will behave exactly as if it was connected directly to the Postgres database, with a few crucial exceptions, as we're about to see.


Feel free to explore the database in pgAdmin if you like. Things are about to get interesting.