栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Docker Postgres的脚本中创建用户/数据库

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Docker Postgres的脚本中创建用户/数据库

编辑-自2015年7月23日起

在正式的Postgresdocker图像将运行

.sql
脚本中找到的
/docker-entrypoint-initdb.d/
文件夹中。

因此,您所需要做的就是创建以下sql脚本:

初始化程序

CREATE USER docker;CREATE DATAbase docker;GRANT ALL PRIVILEGES ON DATAbase docker TO docker;

并将其添加到您的Dockerfile中:

Docker文件

FROM library/postgresCOPY init.sql /docker-entrypoint-initdb.d/

但自2015年7月8日, 如果你需要的是创建一个用户和数据库
,它更容易只是让要用到的

POSTGRES_USER
POSTGRES_PASSWORD
POSTGRES_DB
环境变量:

docker run -e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker -e POSTGRES_DB=docker library/postgres

或使用Dockerfile:

FROM library/postgresENV POSTGRES_USER dockerENV POSTGRES_PASSWORD dockerENV POSTGRES_DB docker

适用于2015年7月23日之前的图像

从postgres Docker映像的文档中可以说,

[…]它将启动在该目录[

/docker-entrypoint-initdb.d
]中找到的任何* .sh脚本,以在启动服务之前进行进一步的初始化

这里重要的是 “启动服务之前” 。这意味着您的脚本 make_db.sh 将在启动postgres服务之前执行,因此错误消息
“无法连接到数据库postgres”

之后,还有另一条有用的信息:

如果您需要在初始化过程中执行SQL命令,则强烈建议使用Postgres单用户模式。

同意这乍看起来可能有些神秘。它表示您的初始化脚本在执行操作之前应以单一模式启动postgres服务。因此,您可以按以下方式更改 make_db.ksh
脚本,它应该使您更接近所需的内容:

注意 ,这在最近的提交中已更改。这将适用于最新更改:

export PGUSER=postgrespsql <<- EOSQL    CREATE USER docker;    CREATE DATAbase docker;    GRANT ALL PRIVILEGES ON DATAbase docker TO docker;EOSQL

以前,需要使用

--single
mode:

gosu postgres postgres --single <<- EOSQL    CREATE USER docker;    CREATE DATAbase docker;    GRANT ALL PRIVILEGES ON DATAbase docker TO docker;EOSQL


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375410.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号