环境
Centos-7
Postgresql-10
docker-19
yum加载Postgresql
1
|
yum install https: //download .postgresql.org /pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2 .noarch.rpm -y |
查看Postgresql版本
1
|
yum list | grep postgresql |
下载Postgresql镜像
1
2
|
#拉取得是版本10 docker pull postgres:10 |
postgis扩展的postgresql组合版本:
使用kartoza/postgis
镜像安装:
1
2
3
4
5
6
7
|
#书写格式 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构建镜像:http://www.tuohang.net/article/135449.html
DockerFile运行命令
1
2
|
# -f DockerFile路径 -t 自定义镜像名称 不要忘记 . docker build -f /docker/dockerfile/mycentos -t mycentos . |
创建宿主机映射sql目录
1
2
|
#这里我在var/lib/下创建 mkdir /var/lib/PostgreSqlData |
构建镜像
1
2
|
#镜像名称修改(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:映射端口,宿主机端口:容器端口
最后是 镜像名称:端口号
这里有个简便的命令
1
|
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容器
1
|
docker exec -it 容器ID bash |
更新软件源
1
2
3
4
|
#更新软件源列表 apt-get update #安装vim apt-get -y install vim |
配置远程访问
1
2
|
#切换到目录/var/lib/postgresql/data cd /var/lib/postgresql/data |
编辑postgresql.conf文件
1
2
|
#修改:在所有IP地址上监听,从而允许远程连接到数据库服务器: listening_address: '*' |
编辑pg_hba.conf文件
1
2
|
#添加或修改:允许任意用户从任意机器上以密码方式访问数据库,把下行添加为第一条规则: host all all 0.0.0.0 /0 md5 |
修改编码格式
1
|
update pg_database set encoding = pg_char_to_encoding( 'UTF8' ) where datname = 'basemap' |
查看pg版本
1
2
3
|
show server_version; # 或者 select version(); |
尝试登录
1
2
|
#登录数据库 psql -U postgres -W |
重点:报错 psql: FATAL: Peer authentication failed for user "postgres"
问题一:
#peer(不可信),trust(可信),md5(加密)
修改 /etc/postgresql/10/main/pg_hba.conf 文件
找到下面这行
1
|
local all postgres peer |
修改成md5(加密) (或改成 trust(可信))
1
|
local all postgres md5 |
问题二:
切换操作用户
1
2
|
#切换成postgres用户 su postgres |
尝试登录,成功。
重启容器
1
|
docker restart 容器name |
完成!
推荐github路径:postgres+postgis多版本部署DockerFile文件集:https://github.com/postgis/docker-postgis
到此这篇关于Docker部署postgresql数据库的文章就介绍到这了,更多相关Docker部署postgresql内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.cnblogs.com/nhdlb/p/12517610.html