博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决postgresql在docker中无法保存状态的问题
阅读量:5748 次
发布时间:2019-06-18

本文共 1324 字,大约阅读时间需要 4 分钟。

 PS:最佳解决方式是将目录挂载到宿主机,容器出问题了,数据还在,以下方式容器出问题会丢失数据,以下思想只供参考!!!

  用过docker的人都知道,docker是不适合来放数据库的,这也不是绝对的。如果你在docker中放postgresql数据库,肯定会碰到这个问题,数据库状态无法保存。如果断电了,或是docker commit后,发现数据的数据全没了。在网上查过不少相关资料,都没有很好的解决这个问题。我用的postgresql是9.6版本的,以下是我的解决方法。

  postgresql初始化后,数据库的位置默认在:/var/lib/postgresql/data,这个目录下的数据在commit的时候是不会保存的。所以在数据库初化的时候指定新的位置,这样数据库的文件就不会丢失了。比如根目录下:/postgresql/data (可能会碰到权限问题,先用root帐户新建postgresql目录,然后切到postgres帐户创建data目录)。

  步骤:

  1、数据库初始化的命令是:/usr/lib/postgresql/9.6/bin/pg_ctl init --pgdata=/postgresql/data。

  2、启动数据库命令:/usr/lib/postgresql/9.6/bin/pg_ctl start  --pgdata=/postgresql/data。

  3、制作登录执行命令:

    写一个可执行脚本postgresql.sh,放在/bin目录下,然后修权限(chmod 777 /bin/postgresql.sh)内容如下:

------------------------------------------------------------------------------------------------

    #!/bin/bash

    su postgres <<EOF
    /usr/lib/postgresql/9.6/bin/pg_ctl start --pgdata=/postgresql/data;
    exit;
    EOF
    /bin/bash

------------------------------------------------------------------------------------------------

  4、制作新的镜像:

  ctrl+D退出后执行下面的命令:

  docker commit.........

  得到一个新的镜像包。

  5、开启新的容器

  docker run \

  -it \

   --name  postgresql \

  -p 5432:5432 \

  postgresql:1.0.0 \

  /bin/postgresql.sh 

  特别注意:是/bin/postgrsql.sh而不是/bin/bash,这样postgresql数据就是启动了。

 

转载于:https://www.cnblogs.com/runnerjack/p/7417881.html

你可能感兴趣的文章
string类的实现加强版
查看>>
dbutils + mysql事务
查看>>
DB2多个表export很好的脚本
查看>>
Eclipse中自动添加注释(作者,时间)
查看>>
MySQL 启动报错File .mysql-bin.index not found (Errcode 13)
查看>>
转-什么?你还不会写JQuery 插件
查看>>
引用记数法和可达性算法
查看>>
linux定时运行命令
查看>>
两个林之间的跨域访问
查看>>
linux ping命令
查看>>
构造HTTP请求Header实现“伪造来源IP”
查看>>
ajax返回json数据
查看>>
shutdown命令
查看>>
java版两图对比相似度
查看>>
我的友情链接
查看>>
SharePoint 2013实例1—构建三层服务器场5—配置DB层3—模拟存储
查看>>
iOS培训教程——NSArray和NSMutableArray章节
查看>>
apache tomcat ajp mod jk
查看>>
我的友情链接
查看>>
Ubuntu 14.0.4 如何设置 VirtualBox 识别 USB 设备
查看>>