若要在 macOS 使用 PostgreSQL,最簡單的方式就是使用 Docker。只要在 docker-compose.yml
描述好 PostgreSQL 設定, docker compose up -d
即可快速啟動。
Version
PostgreSQL 14.0
Docker Compose
docker-compose.yml
version: "3"
services:
postgres:
image: postgres:latest
container_name: postgres
volumes:
- ${HOST_DIR}:/var/lib/postgresql/data
ports:
- ${POSTGRES_PORT}:5432
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
設定 Postgres container:
image: postgres:latest
:使用 PostgreSQL 官方所提供 image 並使用最新版本container_name: postgres
:設定 container 名稱volumns
:將 host 目錄對應到 PostgreSQL 內部儲存 data 目錄,避免 container 結束後資料就銷毀ports
:設定 container 對外 port 與 PostgreSQL 的 port 對應environment
:設定 database 名稱、id 與 password
Environment Variable
.env
HOST_DIR=.data
POSTGRES_PORT=5432
POSTGRES_DB=KnexLab
POSTGRES_USER=admin
POSTGRES_PASSWORD=12345
此為 docker-compose.yml
所設定的環境變數,被獨立在 .env
中,可單獨設定,將來不用修改 docker-compose.yml
。
HOST_DIR
:設定 PostgreSQL data 要存到 host 位置POSTGRES_PORT
:設定 PostgreSQL 對應到 host 的 portPOSTGRES_DB
:設定 database 名稱POSTGRES_USER
:設定 idPOSTGRES_PASSWORD
:設定 password
Start PostgreSQL
$ docker compose up -d
使用 docker compose up
啟動 PostgreSQL。
-d
: d
etach,建立 container 後,就脫離目前 process
DataGrip
以 DataGrip 連接 PostgreSQL。
由於 PostgreSQL 是以 Docker 執行,因此 host 填 localhost
,port 透過 5432
即可連接。
DataGrip 順利連上 PostgreSQL。
Stop PostgreSQL
$ docker compose down
使用 docker compose down
結束 PostgreSQL,並且刪除 container,但資料仍會留在 host。
Conclusion
- 要在 macOS 使用 PostgreSQL,最簡單的方式就是使用 Docker
- 由於
docker compose down
除了將 container 刪除,其資料也會跟著刪除,因此要使用volumns
將資料存放在 host