在kubernetes中部署postgres时,虽然环境变量未初始化用户和数据库

问题描述 投票:0回答:1

[当我尝试通过kubernetes部署postgres时,我已经通过创建configmap和秘密文件来填充所有必需的环境变量,例如POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_DATABASE等。容器已成功部署,我可以通过“ kubectl exec”命令打开其终端。当我运行“ env”命令时,可以看到在部署过程中提供的所有环境变量均已成功设置。但是当我尝试运行时:

psql -U testuser -d testdb

它提供两种类型的错误:

psql:无法连接到服务器:致命:角色'testuser'不存在

psql:无法连接到服务器:致命:数据库'testdb'不存在

经过大量研究,我发现即使在设置环境变量之后,也不会初始化用户和数据库。因此,我创建了一个init.sql文件并将其添加到docker-entrypoint-initdb.d中以构建自定义映像,将其推送到docker hub并通过该映像在kubernetes中部署postgres。

init.sql文件内容:

CREATE USER testuser WITH SUPERUSER PASSWORD test;

CREATE DATABASE testdb;

GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser; 

Dockerfile内容:

FROM postgres:latest

ADD init.sql /docker-entrypoint-initdb.d/

EXPOSE 5432

仍然,我遇到相同的错误。用户和数据库尚未初始化...请为此帮助我

UPDATE

日志:

PostgreSQL Database directory appears to contain a database; Skipping initialization

2020-04-15 09:50:06.855 UTC [1] LOG:  starting PostgreSQL 12.2 (Debian 12.2-2.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2020-04-15 09:50:06.855 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2020-04-15 09:50:06.855 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2020-04-15 09:50:07.000 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2020-04-15 09:50:07.204 UTC [26] LOG:  database system was interrupted; last known up at 2020-04-15 09:50:02 UTC
2020-04-15 09:50:07.781 UTC [26] LOG:  database system was not properly shut down; automatic recovery in progress
2020-04-15 09:50:07.815 UTC [26] LOG:  invalid record length at 0/16453B0: wanted 24, got 0
2020-04-15 09:50:07.815 UTC [26] LOG:  redo is not required
2020-04-15 09:50:08.034 UTC [1] LOG:  database system is ready to accept connections

这里已经提到了“跳过初始化”

database postgresql docker kubernetes database-connection
1个回答
0
投票
Docker文件是这样的

FROM postgres:latest ADD init-user-db.sh /docker-entrypoint-initdb.d/init-user-db.sh EXPOSE 5432

© www.soinside.com 2019 - 2024. All rights reserved.