Install PostgreSQL using Docker
Hai semuannya, di materi kali ini kita membahas Install PostgreSQL menggunakan Docker, Pembahasannya diantaranya:
- Install docker
- Running PostgreSQL in Docker
- Using pgAdmin4web based
- Migrate schema using flyway
Ok langsung saja kita bahas ke materi yang pertama yaitu
Install docker
Buat temen-temen yang belum kenal dengan Docker, Docker adalah salah satu teknologi virtualization yang sedang naik daun 3 tahun terakhir karena memudahkan kita untuk melakukan install suatu software/service. Kita juga bisa memanfaatkan docker ini untuk belajar PostgreSQL sebagai Learning environment.
Tahap pertama, yang harus temen-temen lakukan adalah install adalah
- Install Docker untuk Windows
- Install Docker untuk linux
- Install Docker untuk mac
Running PostgreSQL in Docker
Untuk menjalakan PostgreSQL di Docker ini sebetulnya sangatlah mudah, kita cukup jalankan perintah:
docker run -p 5432:5423 \
  -e POSTGRES_PASSWORD=password \
  -d postgres:14.1Tetapi kita akan menggunakan docker-compose ya supaya scriptnya tersimpan dengan baik. seperti berikut:
Kemudian kita buat file .env seperti berikut:
PRIVATE_REPOSITORY=docker.io/
POSTGRES_VERSION=14.1-alpine
POSTGRES_PORT=5432
POSTGRES_PASSWORD=password
POSTGRES_USER=postgres
POSTGRES_DB=postgresKemudian kita jalankan dengan perintah
docker-compose -f docker-compose.yaml --env-file .env up -dUsing pgAdmin4 web based
Untuk text editor seperti pgadmin4 kita bisa menggunakan versi Desktop atau juga kita bisa menggunakan version web yang kita pasang dalam docker, sepertinya temen-temen liat pada script docker-compose.yaml sebelumnya seperti berikut:
pgadmin4:
  image: ${PRIVATE_REPOSITORY}dpage/pgadmin4
  profiles:
    - debug
  environment:
    - PGADMIN_DEFAULT_PASSWORD=${POSTGRES_PASSWORD}
    - PGADMIN_DEFAULT_EMAIL=${POSTGRES_USER}@example.com
  ports:
    - 55432:80
  volumes:
    - pg_admin_data:/var/lib/pgadmin
  depends_on:
    - postgresUntuk meng-aktifikan container pgadmin4 tersebut, kita perlu menggunakan profile debug dengan perintah seperti berikut:
docker-compose -f docker-compose.yaml --env-file .env --profile debug up -dJika sudah, kita bisa akses dengan alamat localhost:55432 seperti berikut:

Sekarang kita akan buat connection ke PostgreSQL server di Docker, Kita klik kanan di Menu Servers -> Create -> Server kemudian kita input connection name contohnya: postgresql dan kemudian kita ke tab Connection seperti berikut:

Berikut properties:
| Property | Value | Description | 
|---|---|---|
| Host | postgres | Karena kita menggunakan container, kita tidak bisa menggunakan localhostkarena docker memiliki ip yang berbeda setiap container | 
| Database | postgres | Sesuaikan dengan .env yang telah kita buat | 
| Username | postgres | Sesuaikan dengan .env yang telah kita buat | 
| Password | password | Sesuaikan dengan .env yang telah kita buat | 
Jika sudah, kita klik Save, maka jika success hasilnya seperti berikut:

Migrate schema using flyway
Untuk belajar, kita membutuhkan user & database/schema untuk mencoba feature dari PostgreSQL. Sekarang kita akan buat user & database di Docker melalui psql
docker-compose \
  -f docker-compose.yaml \
  --env-file .env \
  exec postgres \
  psql -U postgres -W Kemudian kita buat schema dengan perintah seperti berikut:
Setelah kita buat schema, user dan database, kita download file ini simpan dalam folder db/migration dan jalankan migrationnya dengan perintah
docker-compose \
-f docker-compose.yaml \
--env-file .env \
--profile migrate up -dJika sudah sekarang kita bisa check dengan perintah berikut:
docker-compose \
-f docker-compose.yaml \
--env-file .env \
exec postgres psql -U hr -W -c "\dt"Jika dijalankan hasilnya seperti berikut:
➜ postgresql git:(master) docker-compose -f docker-compose.yml --env-file .env exec postgres psql -U hr -W -c "\dt"
Password:
                  List of relations
  Schema  |         Name          | Type  |  Owner
----------+-----------------------+-------+----------
 hr       | countries             | table | hr
 hr       | departments           | table | hr
 hr       | employees             | table | hr
 hr       | flyway_schema_history | table | hr
 hr       | job_history           | table | hr
 hr       | jobs                  | table | hr
 hr       | locations             | table | hr
 hr       | regions               | table | hr
(8 rows)
- 
                            Referensihttps://hub.docker.com/_/postgres
 
     
     
                         
                     
                    