我正在使用赞助人舵图。没有自动创建模式的工具。所以我提供了一个 ConfigMap 如下:
kind: ConfigMap
apiVersion: v1
metadata:
name: {{ template "patroni.fullname" . }}
labels:
app: {{ template "patroni.fullname" . }}
release: {{ .Release.Name }}
data:
init.sql: |-
**DB SCHEMA TO BE CREATED**
在 Kind Statefulset 中,在 volumeMounts 部分中,我提供了 mountPath 如下所示以将 init.sql 文件挂载到容器中。所以 init.sql 文件被挂载到 /docker-entrypoint-initdb.d/init.sql
volumeMounts:
- mountPath: /docker-entrypoint-initdb.d/
name: test
在卷部分,我添加了以下几行
volumes:
- name: test
configMap:
name: {{ template "patroni.fullname" . }}
因此,当我部署图表时,它的部署没有错误。当我执行到 pod 中时,我可以看到我在 ConfigMap 中提供的 init.sql 文件。但是该脚本没有执行,当我尝试通过命令手动运行它时
psql -f init.sql
我收到 psql 错误:致命:角色“root”不存在
我执行的命令是:
oc exec -it postgres-ha-test-patroni-0 bash
此容器由 supervisord 管理,停止/启动服务时使用 supervisorctl
例子:
supervisorctl stop cron supervisorctl restart 守护神
当前状态:(supervisorctl status)
cron RUNNING pid 31,正常运行时间 0:45:42
root@postgres-ha-test-patroni-0:/docker-entrypoint-initdb.d# psql -f docker-entrypoint-initdb.d/init.sql
psql:致命:角色“root”不存在
在这里,root 角色不存在。如果我通过 postgres 用户登录并执行 .sql 文件,它运行正常。但是我想自动运行它,一旦我部署了patoni helm chart,也应该创建数据库模式。
请帮帮我。我正在尝试很长时间。