相关疑难解决方法(0)

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

我一直在尝试通过创建自定义用户和数据库来为开发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"
Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM library/postgres

RUN ["mkdir", "/docker-entrypoint-initdb.d"]
ADD make_db.sh /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)

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

createuser:无法连接到数据库postgres:无法连接到服务器:没有这样的文件或目录

似乎/docker-entrypoint-initdb.d/在postgres启动之前正在执行文件夹内的命令.我的问题是,如何使用官方postgres容器以编程方式设置用户/数据库?有没有办法用脚本执行此操作?

postgresql bash docker dockerhub

179
推荐指数
8
解决办法
17万
查看次数

如何在 docker-compose 处理的 postgres docker 容器中运行 psql 命令?

这个问题与此相关:Docker - How can run the psql command in the postgres container?

但是上面提供的解决方案仅在您手动执行操作时才有效,而这里人们希望使用 docker-compose 自动执行操作。

所以这个 docker 容器可以工作:

FROM postgres
COPY init.sql /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)

但是这个 docker 容器失败了:

FROM postgres
RUN psql -U postgres -c "CREATE USER user WITH PASSWORD 'pass';"
Run Code Online (Sandbox Code Playgroud)

因为当执行 RUN 时,postgresql 服务器还没有

有没有办法克服这个限制?

postgresql docker dockerfile docker-compose

4
推荐指数
1
解决办法
4370
查看次数