Docker安裝並運行PostgreSQL資料誤的方式如下。
範例環境:
- MacBook Apple M1 Pro
- macOS Ventura 13.01
- Docker version 24.0.2
建立Docker Volume
執行docker volume create postgres-data
建立postgres-data
的volume,準備用來存放在docker容器中運行的 postgresql資料庫的資料。
% docker volume create postgresql-data
postgresql-data
安裝PostgreSQL
執行docker pull postgres:15
下載postgres版本15的image。
% docker pull postgres:15
15: Pulling from library/postgres
4ee097f9a366: Pull complete
76feac26ff4c: Pull complete
cd38eeb1c7ed: Pull complete
c5a6aa48270c: Pull complete
8400a13ec8f7: Pull complete
0bddf18c4a6e: Pull complete
287cdab72fa1: Pull complete
d55736c8451f: Pull complete
d84639c1fc9e: Pull complete
a7a76ec02575: Pull complete
b0c360759201: Pull complete
118910365168: Pull complete
f6a1c2f3f6a0: Pull complete
Digest: sha256:a5e89e5f2679863bedef929c4a7ec5d1a2cb3c045f13b47680d86f8701144ed7
Status: Downloaded newer image for postgres:15
docker.io/library/postgres:15
執行docker run --name postgres -d -it -p 5432:5432 --restart always -v postgresql-data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=12345 postgres:15
來運行postgres container。
參數說明:
-p 5432:5432
- 把本地的5432 port映射到容器的5432 port。--restart always
- docker重啟後容器也會一同重啟。-v postgresql-data:/var/lib/postgresql/data
- 把剛建立的volumepostgresql-data
對到容器的/var/lib/postgresql/data
,而該目錄為容器中PostgreSQL資料庫儲存資料的目錄(porgres image的Dockerfile的PGDATA
為此路徑)。-e POSTGRES_PASSWORD=12345
- 提供容器運行時的環境變數POSTGRES_PASSWORD=12345
。
% docker run --name postgres -d -it -p 5432:5432 --restart always -v postgresql-data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=12345 postgres:15
541af122d703ff7e2d920f54d13d44c928e7fec035766f060c5dca64f208085e
執行docker ps
查看運行中的postgres容器。
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
541af122d703 postgres:15 "docker-entrypoint.s…" 51 seconds ago Up 51 seconds 0.0.0.0:5432->5432/tcp postgres
連線
開啟資料庫管理工具,例如DBeaver,建立新連線。
- [Host]維持預設為
localhost
。 - [Database]維持預設為
postgres
。 - [Username]維持預設為
postgres
。 - [Password]填入剛運行postgres容器時的
POSTGRES_PASSWORD
的值,即12345
。
設定完後按Finish完成並連線到docker的postgres資料庫。
沒有留言:
張貼留言