1 前言
在文章《Docker启动PostgreSQL并推荐几款连接工具》中我们介绍如何通过Docker
来启动PostgreSQL
,但只有一个数据库,如果想要创建多个数据库在同一个Docker
容器上怎么办呢?
2 两种方案
一种方案是把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 $d