1. 程式人生 > 實用技巧 >Centos上docker部署postgres

Centos上docker部署postgres

docker上快速部署Postgresql資料庫,可以參考docker-postgres的官方解決方案https://hub.docker.com/_/postgres/

核心命令

docker run --name yourappname -e POSTGRES_PASSWORD=xxx -e POSTGRES_USER=xxx -v ./data:/var/lib/postgresql/data/pgdata -d -p xxxx:5432 postgres

命令執行步驟

第一步:在任意機子上建立一個映象,指定資料卷位置,並將其掛載到虛擬機器上

第二步:按照你指定的埠訪問資料庫,做資料初始化。包括建表和插入初始資料。

第三步:備份資料卷。也就是上面的./data目錄。

第四步,將這個資料卷放到你的伺服器上

第五步和第一步一樣。但是此時,你的資料卷裡面已經有之前儲存的內容了。

1、在linux中建立目錄

[root@bb software]# mkdir -p dev-postgres/data
[root@bb software]# cd dev-postgres/data
[root@bb dev-postgres]# pwd
/software/dev-postgres/data
[root@bb dev-postgres]# 

2、命令

docker run --name my-postgres -e POSTGRES_PASSWORD=xxxxxx -e POSTGRES_USER=postgres -v /software/dev-postgres/data:/home
/data/ -p 15555:5432 -d postgres
-it -d 這兩個引數一般同時使用,保證 container 以互動的方式在後臺執行。
--rm 這個引數是指在 container 停止時自動將 container 刪除。
--name 你在使用 docker ps 命令時看到的 container 的名字。
-e POSTGRES_USER=dbuser 這個是設定 container 中的環境變數用的引數,指的是設計資料庫使用者為 dbuser 。之後登入資料庫時就是使用這個使用者名稱。
-e POSTGRES_PASSWORD=password 同上,也是設定 container 中的環境變數,這個是設定你登入資料庫的密碼,這裡設定的密碼為"
password"-e POSTGRES_DB=testdb 同上,初始化一個新的資料庫,其名字為 testdb。 -p 5432:5432 這個是將主機的埠與 container 暴露的埠進行對映。其格式為 -p 主機埠: container 埠。即 : 前為主機埠,後為 container 埠。 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data 掛載目錄。將容器中的 /var/lib/postgresql/data 目錄掛載至我們剛才新建的磁碟上的 $HOME/docker/volumes/postgres ,以便資料的持久化 postgres 為下載下來的 image 的名字。如果你的主機上沒有相應的 image ,則 docker 會自動從 dockerhub 活著你設定的源上下載相應的 image。

3、進入容器驗證

 docker exec -ti my-postgres /bin/bash
root@b63cf7c32fb7:/bin# psql -U postgres
psql (13.0 (Debian 13.0-1.pgdg100+1))
Type "help" for help.

postgres=# \l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)

postgres=# 

4、連線測試