Docker makes all development things really easy. Just one line command and you are up with whatever you want (of course if it’s available as docker Image ๐).
Gone are those days when you have to spend hour or so to setup just a simple database on you local development environment , worrying about process , ports etc. Docker makes it really easy for you . In this article we will use a simple docker compose file to setup the PostgreSQL data base as well as PG Admin.
Here is the docker compose file to set it up. Save this code as docker-compose.yaml
version: "3"
services:
db:
container_name: my-pg-db
image: postgres:13.4-buster
restart: always
environment:
POSTGRES_USER: pguser
POSTGRES_PASSWORD: pgpassword
POSTGRES_DB: mydatabase
ports:
- "5432:5432"
volumes: # Persist the db data
- database-data:/var/lib/postgresql/data
pgadmin:
container_name: my-pgadmin
image: dpage/pgadmin4
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: mypg@example.com
PGADMIN_DEFAULT_PASSWORD: Hello123
ports:
- "9080:80"
volumes:
database-data:
To run this docker container go to the folder in which it is saved and type the following command
$ docker-compose up
The above command will run 2 docker containers , one is postgres db container my-pg-db and other one is PG Admin container my-pgadmin. You can check these with docker ps command . Now as the PG Admin container is running at port 9080 got to http://localhost:9080 , you should see page like this.
Here you have to login with credentials given in my-pgadmin container . One login you will have to add server from left side
In create Server page , in general section provide any name
In Connection Tab as shown you will have to provide IP address of the my-pg-db container.
to get IP address of the container , type below command
$ docker inspect <CONTAINER_ID_OF_my-pg-db> | grep IPAddress
the IP address returned by this command should be used at Host Name/address field .
Other fileds are similar to environment variables provided to my-pg-db in you docker-compose.yaml file. Click on save and you will see the database listed in you server.
To access this database from your development environment just use IP as localhost and port as mention in docker file (int this case 53432)
for example your JDBC url should look like for postgres database
jdbc:postgresql://localhost:5432/postgres
That’s it , it is as simple as that .