首頁 > 軟體

關於Docker部署postgresql資料庫的問題

2022-03-01 13:01:41

環境

Centos-7

Postgresql-10

docker-19

yum載入Postgresql

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y  

檢視Postgresql版本

yum list | grep postgresql

下載Postgresql映象

#拉取得是版本10
docker pull postgres:10

postgis擴充套件的postgresql組合版本:

使用kartoza/postgis映象安裝:

#書寫格式
kartoza/postgis:[postgres_version]-[postgis-version]
11.0-2.5
10.0-2.4
9.6-2.4
# 例如:拉取 postgresql 9.6 版本以及postgis 2.4 版本
docker pull kartoza/postgis:9.6-2.4

或參照DockerFile構建映象:https://www.jb51.net/article/115422.htm

DockerFile執行命令

# -f DockerFile路徑 -t 自定義映象名稱 不要忘記 . 
docker build -f /docker/dockerfile/mycentos -t mycentos .

建立宿主機對映sql目錄

#這裡我在var/lib/下建立
mkdir /var/lib/PostgreSqlData

構建映象

#映象名稱修改(docker tag 映象ID 自定義名稱)
docker run --name my_postgres -v /home/data:/var/lib/postgresql -e POSTGRES_PASSWORD=****** -d -p ****:5432 postgres 

--name : 自定義容器名稱

-v :進行對映,本地目錄:容器內路徑

POSTGRES_PASSWORD:資料庫密碼

-p:對映埠,宿主機埠:容器埠

最後是 映象名稱:埠號

這裡有個簡便的命令

docker run -d --name postgres --restart always -e POSTGRES_USER='postgres' -e POSTGRES_PASSWORD='abc123' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /home/postgres/data:/var/lib/postgresql -p 5432:5432 -t postgis
  • -e ALLOW_IP_RANGE=0.0.0.0/0,這個表示允許所有ip存取,如果不加,則非本機 ip 存取不了
  • -e POSTGRES_USER=abcuser 使用者名稱
  • -e POSTGRES_PASS=‘abc123’ 指定密碼

進入postgres容器

docker exec -it 容器ID bash

更新軟體源

#更新軟體源列表
apt-get update 
#安裝vim
apt-get -y install vim 

設定遠端存取

#切換到目錄/var/lib/postgresql/data
cd /var/lib/postgresql/data

編輯postgresql.conf檔案

#修改:在所有IP地址上監聽,從而允許遠端連線到資料庫伺服器:
listening_address: '*'

編輯pg_hba.conf檔案

#新增或修改:允許任意使用者從任意機器上以密碼方式存取資料庫,把下行新增為第一條規則:
host    all             all             0.0.0.0/0               md5

修改編碼格式

update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'basemap'

檢視pg版本

show server_version;
# 或者
select version();

嘗試登入

#登入資料庫
psql -U postgres -W

重點:報錯 psql: FATAL: Peer authentication failed for user "postgres"

問題一:

#peer(不可信),trust(可信),md5(加密)

修改 /etc/postgresql/10/main/pg_hba.conf 檔案

找到下面這行

local   all             postgres                                peer

修改成md5(加密) (或改成 trust(可信))

local   all             postgres                                md5

問題二:

切換操作使用者

#切換成postgres使用者
su postgres

嘗試登入,成功。

重啟容器

docker restart 容器name

完成!

推薦github路徑:postgres+postgis多版本部署DockerFile檔案集:https://github.com/postgis/docker-postgis

到此這篇關於Docker部署postgresql資料庫的文章就介紹到這了,更多相關Docker部署postgresql內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com