Trong bài viết này, mình hướng dẫn các bạn cách cài đặt PostgreSQL server sử dụng Docker các bạn nhé!

Cài đặt PostgreSQL server và pgadmin sử dụng Docker-compose macos

2022-04-24 1413 lượt xem

Bài viết này hướng dẫn bạn cách chạy PostgreSQL DB và pgadmin trong 5 phút và chỉ 4 bước đơn giản.

Tạo directories

Mở terminal tại cấp thư mục của bạn, giả sử bạn đang dùng cấp thư mục project của bạn là my-project thì bạn sẽ cần tạo folder data để mount những thứ cần thiết của docker ra. Nên chúng ta gõ lệnh sau:

mkdir -m 777 -p ./data/postgresql/ ./data/db/ ./data/pgadmin/
touch docker-compose.yml
touch README.md
touch .gitignore

Cấu trúc thư mục sẽ cần có thêm .gitinore, readme.md, và dĩ nhiên file cần thiết là docker-compose.yml nên sẽ như sau:

🗁 my-project
  |--🗁 data
  |  |--🗀 db
  |  |--🗀 pgadmin
  |  `--🗀 postgresql
  |--🗎 .gitignore
  |--🗎 docker-compose.yml
  `--🗎 README.md

Thêm nội dung file docker-compose.yml và các filekhác

docker-compose

Vào file docker-compose.yml thay đổi thành nội dung như sau:

version: '3'

services:
  postgres:
    container_name: postgres_container
    image: postgres:10.5
    restart: unless-stopped
    environment:
      POSTGRES_USER: ${POSTGRES_USER:-postgres}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password123}
      PGDATA: /var/lib/postgresql/data
    volumes:
      - './data/db:/data/db'
      - './data/postgresql:/var/lib/postgresql/data'
    ports:
      - "5432:5432"
    logging:
      options:
        max-size: 10m
        max-file: "3"
    networks:
      - postgres

  pgadmin:
    container_name: pgadmin_container
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org}
      PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
      PGADMIN_CONFIG_SERVER_MODE: 'False'
    volumes:
      - './data/pgadmin:/var/lib/pgadmin'

    ports:
      - "${PGADMIN_PORT:-5050}:80"
    networks:
      - postgres
    restart: unless-stopped

networks:
  postgres:
    driver: bridge

gitignore

file .gitignore với nội dung như sau:

# file .gitignore
data

README.md

# Postgresql & PgAdmin powered by compose

## Requirements:
* docker >= 17.12.0+
* docker-compose

## Quick Start
* Clone or download this repository
* Go inside of directory,  `cd compose-postgres`
* Run this command `docker-compose up -d`

## Environments
This Compose file contains the following environment variables:

* `POSTGRES_USER` the default value is **postgres**
* `POSTGRES_PASSWORD` the default value is **password123**
* `PGADMIN_PORT` the default value is **5050**
* `PGADMIN_DEFAULT_EMAIL` the default value is **pgadmin4@pgadmin.org**
* `PGADMIN_DEFAULT_PASSWORD` the default value is **admin**

## Access to postgres: 
* `localhost:5432`
* **Username:** postgres (as a default)
* **Password:** password123 (as a default)

## Access to PgAdmin: 
* **URL:** `http://localhost:5050`
* **Username:** pgadmin4@pgadmin.org (as a default)
* **Password:** admin (as a default)

## Add a new server in PgAdmin:
* **Host name/address** `postgres`
* **Port** `5432`
* **Username** as `POSTGRES_USER`, by default: `postgres`
* **Password** as `POSTGRES_PASSWORD`, by default `password123`

Run docker

bạn cần di chuyển terminal đến thư mục my-project và gõ lệnh:

docker-compose up

Kết nối postgre với pgadmin và navicat

pgadmin

Để kết nối với pgadmin thì mình có ghi trong file README.md rồi: 

bạn dùng: http://localhost:5050

nhập password là password123 là sẽ có giao diện thế này: 

bạn chú ý: vì máy mình dùng mac nên cái host nó xài host.docker.internal chứ không thì bạn có thể tra host bằng cách sau: 

khi chạy docker-compose up thì nó có hiện cái host như hình: 

=> host của bạn là 172.20.0.1.

Có 1 cách khác chắc cú hơn là vào terminal kiếm cái container id là gì: 

docker ps

được thông tin như sau: 

$ docker ps

CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS          PORTS                           NAMES

3ee31948b8a2   postgres:10.5    "docker-entrypoint.s…"   30 minutes ago   Up 30 minutes   0.0.0.0:5432->5432/tcp          postgres_container

 Rồi gọi lệnh:

docker inspect CONTAINER_ID  | grep IPAddress. 
# ví dụ 
docker inspect 3ee31948b8a2  | grep IPAddress.

 

Connect với navicat

những tag