環境
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
