Docker Compose Postgres Multiple Database

Docker Compose Postgres/Postgresql Multiple Database

Image for post
Docker Postgres/Postgresql Multiple Database

Video Tutorial

In this article, We will explain to you how to set up Postgresql following multiple databases using Docker-Compose

  1. root (use can use it for local development)
  2. test (use can use it for testing)

Production Env:

The production database environment. You can use cloud databases such as AWS RDS, Heroku, etc.

Development Env:

A dedicated environment for database for local development.

Test Env:

A dedicated environment for database testing.

Why we need multiple databases?

If you have only a Production Database and you are developing a new feature if something breaks it will affect the whole Production Database.

For best practice, You must have a different Database Development Environment because if you are developing a new feature in a Development Environment if something breaks it will not impact on Production Database Environment.

Let’s Start Creating Multiple Environment Database

Hope you are familiar with “Docker-Compose”

Folder structure

Project
├── docker-compose.yml (File)
├── docker_postgres_init.sql (File)
Image for post
Image for post

Create a new file docker-compose.yml

Above file, we have created a Postgres Docker container with Port No: 5432

As well as set environment variables such as default username, password of Postgres container.

if you check the entire file we have also created volumes that point to the `docker_postgres_init.sql` file.

- ./docker_postgres_init.sql:/docker-entrypoint initdb.d/docker_postgres_init.sql

The script inside “docker_postgres_init.sql” will create multiple databases upon container startup. You can see the following file we have created 2 database and different 2 users for each database.

  1. root (Default root for local development)
  2. test (For Testing)

When you run the following command in the root directory for the project.

docker-compose up

then you will see in the console docker_postgres_init.sql script will be executed as the following screenshot

Image for post

that means your script executed successfully.

How to test connection

For testing, we used Pgadmin4 configured already in the docker-compose file.

Image for post

Try to run following URL in the browser

http://localhost:16543

and enter username and password as following screenshot.

username: test@gmail.com
password: test123!
Image for post
Pgadmin4

after successful login, you will see the following screen.

Image for post

Then click on to server -> create -> server

You will see the following pop up then in the General tab

type

name: root_user

Image for post

Then click on Connection tab as the following screenshot then input Hostname

Image for post

You can get Hostname by typing following command

$ ifconfig |grep inet
Image for post

the type

Database: root

Username: root

Password: root

Image for post

then click on to Save Button

then you will see the connection successful on the left side of the Pgadmin 4 navigation as shown below.

Image for post

Written by

We teach & develop for startups

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store