docker上快速部署Postgresql数据库,可以参考docker-postgres的官方解决方案 https://hub.docker.com/_/postgres/ 

核心命令

docker run --name yourappname -e POSTGRES_PASSWORD=xxx -e POSTGRES_USER=xxx -v ./data:/var/lib/postgresql/data/pgdata -d -p xxxx:5432 postgres

命令执行步骤

第一步:在任意机子上建立一个镜像,指定数据卷位置,并将其挂载到虚拟机上

第二步:按照你指定的端口访问数据库,做数据初始化。包括建表和插入初始数据。

第三步:备份数据卷。也就是上面的./data目录。

第四步,将这个数据卷放到你的服务器上

第五步和第一步一样。但是此时,你的数据卷里面已经有之前保存的内容了。

 1、在linux中创建目录

[root@bb software]# mkdir -p dev-postgres/data
[root@bb software]# cd dev-postgres/data
[root@bb dev-postgres]# pwd
/software/dev-postgres/data
[root@bb dev-postgres]# 

2、命令

docker run --name my-postgres -e POSTGRES_PASSWORD=xxxxxx -e POSTGRES_USER=postgres -v /software/dev-postgres/data:/home/data/ -p 15555:5432 -d postgres
-it -d 这两个参数一般同时使用,保证 container 以交互的方式在后台运行。
--rm 这个参数是指在 container 停止时自动将 container 删除。
--name 你在使用 docker ps 命令时看到的 container 的名字。
-e POSTGRES_USER=dbuser 这个是设置 container 中的环境变量用的参数,指的是设计数据库用户为 dbuser 。之后登录数据库时就是使用这个用户名。
-e POSTGRES_PASSWORD=password 同上,也是设置 container 中的环境变量,这个是设置你登录数据库的密码,这里设置的密码为"password"-e POSTGRES_DB=testdb 同上,初始化一个新的数据库,其名字为 testdb。
-p 5432:5432 这个是将主机的端口与 container 暴露的端口进行映射。其格式为 -p 主机端口: container 端口。即 : 前为主机端口,后为 container 端口。
-v $HOME/docker/volumes/postgres:/var/lib/postgresql/data 挂载目录。将容器中的 /var/lib/postgresql/data 目录挂载至我们刚才新建的磁盘上的 $HOME/docker/volumes/postgres ,以便数据的持久化
postgres 为下载下来的 image 的名字。如果你的主机上没有相应的 image ,则 docker 会自动从 dockerhub 活着你设置的源上下载相应的 image。

3、进入容器验证

 docker exec -ti my-postgres /bin/bash
root@b63cf7c32fb7:/bin# psql -U postgres
psql (13.0 (Debian 13.0-1.pgdg100+1))
Type "help" for help.

postgres=# \l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)

postgres=# 

 

4、连接测试

Centos上docker部署postgres