• 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/data -p 55433: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

  • 相关阅读:
    高性能javascript学习笔记系列(1) -js的加载和执行
    拖放 js
    js 内存小记
    原生方法系列 3(查缺补漏 不断更新)
    mongodb系列3 mongo mongoskin 连接以及连接数的问题进阶
    自定义浏览器alert ,抛弃掉死板的蓝框 自定义风格提示框。jquey ui bootstrap 实现自定义 alert confirm prompt ,by大崔
    CSS颜色代码大全
    WCF简单应用总结 by Jimmyzzc
    时间戳转换
    Ajax+MVC异常错误返回
  • 原文地址:https://www.cnblogs.com/nhdlb/p/12517610.html
Copyright © 2020-2023  润新知