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:
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:
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ì:
đượ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