欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker啟動PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫的解決方案

 更新時(shí)間:2021年06月30日 08:44:29   作者:南瓜慢說  
這篇文章主要介紹了Docker啟動PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫的解決方案,重點(diǎn)給大家介紹如何把shell/sql腳本放入/docker-entrypoint-initdb.d/目錄中,讓容器啟動的時(shí)候自動執(zhí)行創(chuàng)建

1 前言

在文章《Docker啟動PostgreSQL并推薦幾款連接工具》中我們介紹如何通過Docker來啟動PostgreSQL,但只有一個(gè)數(shù)據(jù)庫,如果想要創(chuàng)建多個(gè)數(shù)據(jù)庫在同一個(gè)Docker容器上怎么辦呢?

2 兩種方案

一種方案是把shell/sql腳本放入/docker-entrypoint-initdb.d/目錄中,讓容器啟動的時(shí)候自動執(zhí)行創(chuàng)建;另一種是通過shell腳本指定創(chuàng)建,本質(zhì)是一樣的。這里只介紹第一種。

shell腳本或sql腳本放入指定目錄,就會自動執(zhí)行,兩種腳本都可以。

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;

3 打包啟動

準(zhǔn)備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

啟動成功后,就會創(chuàng)建如下數(shù)據(jù)庫:

db1,db2,
logdata,orderdata,userdata

4 總結(jié)

這是在開發(fā)測試階段使用的方案,實(shí)際上把數(shù)據(jù)庫放在容器中不是一個(gè)好的選擇。

代碼請查看:https://github.com/LarryDpk/pkslow-samples

到此這篇關(guān)于Docker啟動PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)Docker啟動PostgreSQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Rabbitmq heartbea心跳檢測機(jī)制原理解析

    Rabbitmq heartbea心跳檢測機(jī)制原理解析

    這篇文章主要介紹了Rabbitmq heartbea心跳檢測機(jī)制原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • harbor修改配置文件后重啟操作

    harbor修改配置文件后重啟操作

    這篇文章主要介紹了harbor修改配置文件后重啟操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 將博客遷移至docker紀(jì)實(shí)

    將博客遷移至docker紀(jì)實(shí)

    作者個(gè)人博客一直是跑在阿里云主機(jī)上的,最近接觸了docker 心血來潮想把自己的應(yīng)用打包到docker容器中去,方便以后的遷移部署,這里把經(jīng)驗(yàn)給大家總結(jié)分享下
    2017-05-05
  • 使用Docker安裝phabricator的配置和使用方法

    使用Docker安裝phabricator的配置和使用方法

    今天小編就為大家分享一篇關(guān)于使用Docker安裝phabricator的配置和使用方法的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 詳解Docker Volume 之權(quán)限管理

    詳解Docker Volume 之權(quán)限管理

    這篇文章主要介紹了詳解Docker Volume 之權(quán)限管理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Dockerfile 部署java web的環(huán)境詳解

    Dockerfile 部署java web的環(huán)境詳解

    這篇文章主要介紹了Dockerfile 構(gòu)建java web 環(huán)境詳解的相關(guān)資料,這里對Dockerfile 進(jìn)行基本介紹,并說明如何構(gòu)建java web環(huán)境進(jìn)行詳解,需要的朋友可以參考下
    2016-12-12
  • Docker容器啟動時(shí)初始化Mysql數(shù)據(jù)庫的方法

    Docker容器啟動時(shí)初始化Mysql數(shù)據(jù)庫的方法

    這篇文章給大家介紹Docker容器啟動時(shí)初始化Mysql數(shù)據(jù)庫的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2013-11-11
  • Docker 打包python的命令詳解

    Docker 打包python的命令詳解

    最近用Python寫了一段爬蟲程序,為了隔離其運(yùn)行環(huán)境,易于分發(fā),把項(xiàng)目打包成Docker鏡像,下面給大家簡單介紹下具體命令寫法
    2016-12-12
  • 修改Docker容器內(nèi)文件的三種實(shí)現(xiàn)方式

    修改Docker容器內(nèi)文件的三種實(shí)現(xiàn)方式

    這篇文章主要介紹了修改Docker容器內(nèi)文件的三種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • docker-swarm之使用Docker secret管理敏感數(shù)據(jù)

    docker-swarm之使用Docker secret管理敏感數(shù)據(jù)

    就Docker Swarm集群服務(wù)而言,secret 是塊狀數(shù)據(jù),例如密碼、SSH私鑰、SSL證書或其他不應(yīng)通過網(wǎng)絡(luò)傳輸或未加密存儲在Dockerfile或應(yīng)用程序源代碼中的數(shù)據(jù),我們可以使用Docker secret 集中管理這些數(shù)據(jù),所以接下來就帶大家了解一下如何使用Docker secret 管理敏感數(shù)據(jù)
    2023-08-08

最新評論