使用Docker搭建Postgresql数据库

使用Docker搭建Postgresql数据库,及设置远程访问

一、拉取Postgresq镜像

docker pull postgres

二、构建镜像容器

docker run -it --name postgress --restart always -e TZ='Asia/Shanghai' -e POSTGRES_PASSWORD='abc123' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /home/postgres/data:/var/lib/postgresql -p 55435:5432 -d postgres

–name : 自定义容器名称

--restart always 此处设置容器在docker 重启时自动启动容器

POSTGRES_PASSWORD:数据库密码

-e ALLOW_IP_RANGE=0.0.0.0/0,这个表示允许所有ip访问,如果不加,则非本机 ip 访问不了, 此处这样设置下面的第五步就可以省略

-e TZ='Asia/Shanghai' 设置时区,此处设置就不需要修改配置文件了,

-v :进行映射,本地目录:容器内路径

-p:映射端口,宿主机端口:容器端口

最后是 镜像名称:端口号

三、进入postgres容器

docker exec -it postgres bash

四、切换当前用户,再登录数据库

将当前root切换成postgres

su postgres

输入用户名,密码再命令执行完后,再根据提示输入

psql -U postgres -W

输入密码,登录成功


经过我的实践,docker pull的已经可以支持远程连接了,不需要在进行下面的步骤,请酌情考虑进行下面的步骤

五、设置远程访问许可(很重要)


共需要修改两个配置文件:pg_hba.conf、postgresql.conf,步骤分别如下:

1、修改postgres配置文件

首先,确认已进入容器,再按下列步骤操作:

1)、修改pg_hba.conf文件

A、用命令将postgres中的pg_hba.conf文件,复制到目录/home中

docker cp postgres:/var/lib/postgresql/data/pg_hba.conf /home

1

B、用Xftp连接服务器,找到home下的pg_hba.conf,并用记事本打开及修改用户的访问权限(#开头的行是注释内容):

# TYPE DATABASE  USER    CIDR-ADDRESS    METHOD

# "local" is for Unix domain socket connections only

local all    all              trust

# IPv4 local connections:

host  all    all    127.0.0.1/32    trust

*host  all    all    0.0.0.1/0    md5*

# IPv6 local connections:

host  all    all    ::1/128      trust

####C、用命令将修改后的文件,替换掉原来的配置文件

docker cp /home/pg_hba.conf postgres:/var/lib/postgresql/data

2)、修改postgresql.conf文件

如上述修改pg_hba.conf一样,先复件到/home文件夹中,然后打开编辑,最后替换掉原配置文件。

定位到 #listen_addresses = ’localhost’,再将行开头都#去掉,并将行内容修改为 localhost 改成:*

listen_addresses = ’*’

你可能感兴趣的:(使用Docker搭建Postgresql数据库)