Start a PostgreSQL Docker Container and Connect CUBA to it

Cuba requires three things:

  1. The IDE/IntelliJ/CLI
  2. A modern browser (Firefox/Chrome/etc)
  3. A DBMS (like PostgreSQL)

This little guide will help set up Postgresql inside a Docker Container and have CUBA connect to it.

Prerequisites

Docker needs to be installed (at time of writing this version: 18.09.3)

Get postgres image

docker pull postgres

Run postgres container

After pulling postgres image successfully, run it into a container while replacing yoursecretpassword with whatever password you want to set for postgres. This will also create port forwarding from the host port 5432 to the container port 5432 as 5432:5432.

Note: if you have a different local postgresql instance running on the same port for some reason, you can opt to change the host port to something else like 5555:5432

docker run --name cuba-postgres -e POSTGRES_PASSWORD=yoursecretpassword -d -p 5432:5432 postgres

Get Docker IP

The network between the container and the host are “bridged”. There are a few ways to get the IP address of the docker host and container.

For Windows

ipconfig should show the docker network connection. Else docker-machine ip (for Docker Toolbox) or docker network inspect bridge in the command prompt should show it as well.

For Linux/Mac

ifconfig should show the docker network connection. Else docker network inspect bridge works too.

Test Database and Connection

SSH into the postgres container:
docker exec -it cuba-postgres bash

Open the PSQL shell: psql -U postgres

Create a Database : postgres=# CREATE DATABASE cuba;

Then exit out of the database \q and container exit back to host.

For Windows

Lots of apps out there like HeidiSQL and pgAdmin. Just enter all of the details we gathered here and into there where:

  • host is the docker IP address
  • port is 5432
  • user is postgres
  • password is yoursecretpassword where you set earlier

For Linux/Mac

If you have a psql client installed, run psql -d cuba -h <your docker ip xxx.xxx.xx.xxx> -U postgres

Enter password prompt and it works.

Since it works, use the same details for connecting from CUBA to your PostgreSQL.

All the best!

4 Likes