在Docker镜像中自定义Postgres数据库

时间:2018-02-19 20:07:17

标签: postgresql docker psql

虽然默认Postgres Image满足了我的需求,但我想个性化数据库及其中的用户。

pulling the image数据库之后有一个用户postgres没有任何密码。

假设此代码运行图像:

docker run -p 5432:5432 postgres

如何在其中运行psql命令? (删除' postgres'用户,创建新数据库,更多用户等)

2 个答案:

答案 0 :(得分:1)

在另一个容器上运行psql并链接它:

$ docker run -it --rm --link <running-postgres-container-id> postgres psql -h postgres -U postgres

或者,在同一个容器上运行psql:

$ docker exec -it <running-postgres-container-id> psql -U postgres

答案 1 :(得分:0)

官方postgres图像接受环境变量来创建具有密码和自定义数据库名称的自定义超级用户。

如果您不希望在运行容器时提供这些变量,您可以使用官方postgres图像作为基础创建图像,添加一个bash脚本来设置适当的环境变量并调用入口点脚本{{3 }}

如果您希望添加更多数据库或用户,您可能希望完全用您自己的脚本替换该脚本(该文件位于容器内的/ usr / local / bin /下)。您会对以下几行感兴趣:

"${psql[@]}" --username postgres <<-EOSQL
            CREATE DATABASE "$POSTGRES_DB" ;
        EOSQL

"${psql[@]}" --username postgres <<-EOSQL
        $op USER "$POSTGRES_USER" WITH SUPERUSER $pass ;