docker - OpenShift 上的 pgAdmin 使用 RedHat 基本镜像

标签 docker openshift redhat pgadmin

我正在尝试使用 RedHat 通用基础镜像(registry.access.redhat.com/ubi8/ubi)为 OpenShift v4 创建一个镜像。不幸的是,这个图像至少对我来说有一些限制,即缺少 wget,最重要的是,我的公司代理弄乱了 SSL 证书,所以我从 dockerfile 创建构建并直接在 OpenShift 中运行它们。
到目前为止,我的 Dockerfile 看起来像:

FROM registry.access.redhat.com/ubi8/ubi

RUN \
    dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-aarch64/pgdg-redhat-repo-latest.noarch.rpm && \
    dnf install -y postgresql13-server

CMD [ "systemctl start postgresql-13" ]
最终出现“错误:GPG 检查失败”。我需要一些帮助,如何使用来自 RedHat 的图像和 Docker 的 rpm 包创建正确的 Dockerfile。任何其他想法都非常受欢迎。
提前致谢!

最佳答案

  • “错误:GPG 检查失败”告诉您您的系统不信任该存储库。您需要将其 key 导入为 rpm --import https://download.postgresql.org/pub/repos/yum/RPM-GPG-KEY-PGDG-AARCH64或任何适合您的版本的键
  • 您不想使用 systemd 启动 postgres 服务器,这实际上违反了在容器内运行单个进程的容器理念。此外,您不能在 openshift 中拥有正确的 pid 1 而不会弄乱 SCC,因为 openshift 限制的主要思想是运行非特权容器,因此在您的环境中可能无法获得 systemd。
  • 查看现有的 postgres dockerfiles 以获得灵感,即非常流行的 bitnami postgres image .请注意,有 entrypoint.sh,它检查数据库是否已经初始化,如果没有则创建它。然后在实际发射为postgres "-D" "$POSTGRESQL_DATA_DIR" "--config-file=$POSTGRESQL_CONF_FILE" "--external_pid_file=$POSTGRESQL_PID_FILE" "--hba_file=$POSTGRESQL_PGHBA_FILE"
  • 除非您真的需要基于 rhel 8 UBI 构建的 postgres 13,否则我建议您查看官方的 redhat docker 镜像,如果您想自己构建它们,这里是链接 - https://github.com/sclorg/postgresql-container .正如您所看到的 - 构建一个合适的 postgresql 是一项艰巨的任务,如果没有处理所有的怪癖并事先了解所有内容 - 您最终可能会得到配置不正确或损坏的数据库。
  • 您还可以在集群中配置 postgres helm 图表、模板甚至运算符(operator),并且只需单击几下即可部署数据库。

  • TL,DR:除非必须,否则不要重新发明轮子,也不要创建自定义数据库图像。如果您必须 - 从知名供应商的现有 Dockerfile 中汲取灵感。

    关于docker - OpenShift 上的 pgAdmin 使用 RedHat 基本镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64612110/

    相关文章:

    python - 如何检测一个是否在 Python 的 docker 容器中运行?

    仅在 docker 容器内的 Python 请求 SSL 错误

    Docker Golang SDK - 如何将容器标准输出重定向到文件

    java - 如何在redhat服务中运行python包装的java程序

    linux - Redhat virsh 控制台 vmname 挂起(无网络连接)

    amazon-web-services - AWS CannotPullContainerError 设备 Docker 上没有剩余空间

    docker - 将本地Docker镜像推送到OpenShift在线

    go - 使用 Kubernetes client-go 创建作业

    docker - openshift错误无效ImageStreamTag的原因是什么?

    java - Java VM 在 Linux 中可以支持多少个线程?