程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Docker Postgres的脚本中创建用户/数据库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在Docker POSTGRes的脚本中@R_729_10589@/数据库?

开发过程中遇到如何在Docker POSTGRes的脚本中@R_729_10589@/数据库的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在Docker POSTGRes的脚本中@R_729_10589@/数据库的解决方法建议,希望对你解决如何在Docker POSTGRes的脚本中@R_729_10589@/数据库有所启发或帮助;

编辑-自2015年7月23日起

在正式的POSTGResdocker图像将运行.sql脚本中找到的/docker- entrypoint-initdb.d/文件夹中。@H_301_7@

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

初始化程序@H_301_7@

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

并将其添加到您的Dockerfile中:@H_301_7@

Docker文件@H_301_7@

FROM library/POSTGRes
copY init.sql /docker-entrypoint-initdb.d/

但自2015年7月8日, ,它更容易只是让要用到的POSTGRES_USERPOSTGRES_passwordPOSTGRES_DB环境变量:@H_301_7@

docker run -e POSTGRES_USER=docker -e POSTGRES_password=docker -e POSTGRES_DB=docker library/POSTGRes

或使用Dockerfile:@H_301_7@

FROM library/POSTGRes
ENV POSTGRES_USER docker
ENV POSTGRES_password docker
ENV POSTGRES_DB docker

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

POSTGRes Docker映像的文档中可以说,@H_301_7@

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

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

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

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

export PGUSER=POSTGRes
psql <<- EOsql
    CREATE USER docker;
    CREATE DATABASE docker;
    GRANT ALL PRIVILEGES ON DATABASE docker TO docker;
EOsql

以前,需要使用--single@H_435_6@mode:@H_301_7@

gosu POSTGRes POSTGRes --single <<- EOsql
    CREATE USER docker;
    CREATE DATABASE docker;
    GRANT ALL PRIVILEGES ON DATABASE docker TO docker;
EOsql

解决方法

我一直在尝试通过创建自定义用户和数据库来为开发POSTGRes实例设置容器。我正在使用官方的POSTGRes
docker镜像。在文档中,它指示您在/docker- entrypoint-initdb.d/文件夹内插入bash脚本以使用任何自定义参数设置数据库。

我的bash脚本:make_db.sh

su POSTGRes -c "createuser -w -d -r -s docker"
su POSTGRes -c "createdb -O docker docker"

Docker文件

FROM library/POSTGRes

RUN ["mkdir","/docker-entrypoint-initdb.d"]
ADD make_db.sh /docker-entrypoint-initdb.d/

我从docker logs -f db(db是我的容器名称)得到的错误是:

/docker-entrypoint- initdb.d/在启动POSTGRes之前,似乎正在执行文件夹内的命令。我的问题是,如何使用官方的POSTGRes容器以编程方式设置用户/数据库?有什么办法可以用脚本做到这一点?

大佬总结

以上是大佬教程为你收集整理的如何在Docker Postgres的脚本中创建用户/数据库全部内容,希望文章能够帮你解决如何在Docker Postgres的脚本中创建用户/数据库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。