docker数据库如何初始化(Docker启动PostgreSQL时创建多个数据库的解决方案)
类别:服务器 浏览量:221
时间:2021-10-03 01:06:13 docker数据库如何初始化
Docker启动PostgreSQL时创建多个数据库的解决方案1 前言在文章《Docker启动PostgreSQL并推荐几款连接工具》中我们介绍如何通过Docker
来启动PostgreSQL
,但只有一个数据库,如果想要创建多个数据库在同一个Docker
容器上怎么办呢?
一种方案是把shell/sql
脚本放入/docker-entrypoint-initdb.d/
目录中,让容器启动的时候自动执行创建;另一种是通过shell
脚本指定创建,本质是一样的。这里只介绍第一种。
把shell
脚本或sql
脚本放入指定目录,就会自动执行,两种脚本都可以。
shell
脚本例子如下:
#!/bin/bash set -e set -u function create_user_and_database() { local database=$1 echo " Creating user and database '$database'" psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL CREATE USER $database; CREATE DATABASE $database; GRANT ALL PRIVILEGES ON DATABASE $database TO $database; EOSQL } if [ -n "$POSTGRES_MULTIPLE_DATABASES" ]; then echo "Multiple database creation requested: $POSTGRES_MULTIPLE_DATABASES" for db in $(echo $POSTGRES_MULTIPLE_DATABASES | tr ',' ' '); do create_user_and_database $db done echo "Multiple databases created" fi
sql
脚本例子如下:
CREATE USER pkslowuser; CREATE DATABASE logdata; GRANT ALL PRIVILEGES ON DATABASE logdata TO pkslowuser; CREATE DATABASE orderdata; GRANT ALL PRIVILEGES ON DATABASE orderdata TO pkslowuser; CREATE DATABASE userdata; GRANT ALL PRIVILEGES ON DATABASE userdata TO pkslowuser;
准备Dockerfile
,把shell/sql
脚本文件放入镜像中去:
FROM postgres:10 COPY src/main/resources/create-multiple-postgresql-databases.sh /docker-entrypoint-initdb.d/ COPY src/main/resources/create-multiple-postgresql-databases.sql /docker-entrypoint-initdb.d/
启动如下:
docker run -itd \ --name pkslow-postgres \ -e POSTGRES_MULTIPLE_DATABASES=db1,db2 \ -e POSTGRES_USER=pkslow \ -e POSTGRES_PASSWORD=pkslow \ -p 5432:5432 \ pkslow/postgresql-multiple-databases:1.0-SNAPSHOT
启动成功后,就会创建如下数据库:
db1,db2, logdata,orderdata,userdata
这是在开发测试阶段使用的方案,实际上把数据库放在容器中不是一个好的选择。
代码请查看:https://github.com/LarryDpk/pkslow-samples
到此这篇关于Docker启动PostgreSQL时创建多个数据库的文章就介绍到这了,更多相关Docker启动PostgreSQL内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
您可能感兴趣
- docker容器临时网络连接(Docker与iptables及实现bridge方式网络隔离与通信操作)
- docker中国加速镜像怎么设置(Docker 安装及配置镜像加速的实现)
- docker查看管理配置信息(Docker Secret的管理和使用详解)
- docker启动项目需要tomcat吗(docker安装tomcat并部署Springboot项目war包的方法)
- dockerfile的镜像原理(dockerfile制作apache镜像的方法)
- docker安装nginx如何配置(docker部署nginx并且挂载文件夹和文件操作)
- docker架构设计详解(Docker核心原理之 Cgroup详解)
- docker里面安装redis(Docker上实现Redis集群搭建)
- docker-compose项目部署(使用Docker Compose部快速署ELK亲测有效)
- docker 容器运行的数据在哪里(docker容器的几种存储详解)
- docker显示容器的gc日志(解决docker使用GDB,无法进入断点的问题)
- docker部署mysql如何访问(完美解决docker安装mysql后Navicat连接不上的问题)
- docker搭建方法(超简单实现Docker搭建个人博文系统)
- docker中mysql连接命令(docker 如何修改mysql的root密码)
- docker端口映射和暴露端口的区别(解决docker指定udp端口号的问题)
- 阿里云docker 基础镜像(Docker 配置阿里云容器服务操作)
- 《寄生虫》 三观不正 人类悲欢从来不相通,感同身受也并非本能(寄生虫三观不正)
- 这部动漫中的女孩子,可比101女孩更加励志(这部动漫中的女孩子)
- 《白狐的人生》热拍 贾征宇偶像包袱难自弃 图(白狐的人生热拍)
- 七夕取消了,牛郎织女没做核酸七夕已经取消(牛郎织女没做核酸七夕已经取消)
- 网友抵制 多地取消 夏日祭 为何惹众怒(网友抵制多地取消)
- 兄弟萌,今年的七夕又取消了 思考 思考(今年的七夕又取消了)
热门推荐
- goweb框架哪个用的最多(教你搭建一个简单的Go Web服务器)
- 图解ftp服务器搭建(三分钟配置一个FTP服务器)
- CSS中的伪类与伪元素
- ip承载网和数通区别(网络线路科普之CN2,GIA,CIA,BGP以及IPLC都是什么意思)
- sql2012登录失败(详解安装sql2012出现错误could not open key...解决办法)
- 织梦dedecms标签手册(织梦DEDECMS网站安全攻略之修改data目录名称方法步骤)
- 数据库的sql语句怎么写(数据库常用的sql语句汇总)
- WebStorm前端开发工具
- php对称算法示例(php解决约瑟夫环算法实例分析)
- sqlserver 存储过程(SQL Server解析XML数据的方法详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9