Docker:Docker部署postgresql數據庫


環境

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://github.com/postgis/docker-postgis

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM