首页 > 解决方案 > docker 容器中的数据库

问题描述

我正在尝试使用 postgres docker 映像创建一个测试数据库,如此处所述

不同之处在于我使用docker run -d --net host --name my-postgres-container my-postgres-image.

当我尝试使用 Dbeaver 连接到数据库时,我得到FATAL: password authentication failed for user "postgres". 如果我尝试不使用本地主机,而是按照链接中的描述映射端口,我会得到Connection Refused. 我读到,在这种情况下,我应该将 localhost 替换为使用docker inspect [container id]. 但是那里什么都没有:

"Networks": {
                "host": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "5f1358819f5ce262fc1ca2ed0d56a77a78601ecd863105d8fad67f2c01aa8606",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }

我不知道如何使用此策略正确创建和连接。

标签: postgresqldocker

解决方案


当您运行 postgres 时,您必须传递userpassword作为环境参数。Kong - postgres 示例

docker run -d --name kong-database \
               --network=kong-net \
               -p 5432:5432 \
               -e "POSTGRES_USER=kong" \
               -e "POSTGRES_DB=kong" \
               -e "POSTGRES_PASSWORD=kong" \
               postgres:9.6

在这里,您使用了自己的 PostgreSQL 映像。

确保您有以下内容Dockerfile

ENV POSTGRES_USER $USER
ENV POSTGRES_PASSWORD $PASSWORD

推荐阅读