我们有一个应该在 Openshift 集群中运行的只读 Postgresql 数据库。我们使用 RHEL 作为底层操作系统。我们的 Dockerfile 将安装 postgres 软件,创建数据库实例,将数据加载到其中,然后关闭数据库并保存图像。我们只使用 bash 和 sql 脚本,并使用 flyway 部署数据库。
启动容器时,入口点脚本将简单地使用"pg_ctl"
命令启动数据库实例,然后执行无限循环以保持容器运行。
Dockerfile 的最后一个命令是 USER 26,其中 26 是 postgres 用户的 id。入口点脚本可以以 postgres 用户或sudo user
.
一切都在 Docker 中运行良好。
在 Openshift 中,容器由属于 root 组的不同用户启动,但不是 root 用户也不是用户 26。实际上 Openshift 忽略了 Dockerfile 中的 USER 26 子句。启动容器的用户(我们称之为 containeruser)无论如何都没有启动 postgres 实例的权限,因此在运行入口点时,它将获得对 postgresql 数据文件夹的权限被拒绝。我尝试了不同的选项,将 containeruser 用户添加到 wheel 组并修改 sudoers 文件以允许它使用 sudo 并以 postgres 用户身份启动入口点,但没有成功。所以我已经准备好我的数据库映像,但无法在 Openshift 中启动它。在 openshift 配置方面,我们不允许进行更改,例如允许使用 sudo,或者以 root 或 postgres 用户身份启动容器。
对这个问题有任何想法或帮助吗?我不是 Openshift 专家。
谢谢!
最好的问候, rimetnac