在openSUSE中通过Dockerfile无法安装PostgreSQL 15.5
问题:Docker构建镜像时无法安装PostgreSQL 15.5(实际得到15.3)
我尝试通过Dockerfile构建镜像以安装PostgreSQL 15.5,使用了如下代码:
# install postgres RUN zypper --non-interactive --quiet addrepo --refresh -p 90 http://download.opensuse.org/repositories/server:database:postgresql/15.5/ PostgreSQL RUN zypper --gpg-auto-import-keys ref RUN zypper --non-interactive in postgresql postgresql-server postgresql-contrib
但通过docker exec进入容器后,查询到的PostgreSQL版本为15.3。需要安装15.5版本,已尝试多种方法但均未解决。
解决方法
1. 强制指定版本安装
Zypper默认会选择匹配依赖的版本,但如果基础镜像自带仓库的优先级更高,可能会拉取旧版本。修改安装命令,明确指定15.5系列的包:
# install postgres RUN zypper --non-interactive --quiet addrepo --refresh -p 10 http://download.opensuse.org/repositories/server:database:postgresql/15.5/ PostgreSQL RUN zypper --gpg-auto-import-keys ref # 强制安装15.5版本 RUN zypper --non-interactive in postgresql=15.5* postgresql-server=15.5* postgresql-contrib=15.5*
2. 先移除旧版本再安装
如果基础镜像已经预装了PostgreSQL 15.3,先彻底移除再安装目标版本:
# install postgres RUN zypper --non-interactive --quiet addrepo --refresh -p 10 http://download.opensuse.org/repositories/server:database:postgresql/15.5/ PostgreSQL RUN zypper --gpg-auto-import-keys ref # 移除已存在的PostgreSQL包(忽略不存在的情况) RUN zypper --non-interactive remove -y postgresql postgresql-server postgresql-contrib || true # 安装指定版本 RUN zypper --non-interactive in postgresql=15.5* postgresql-server=15.5* postgresql-contrib=15.5*
3. 验证仓库包信息(调试用)
如果仍有问题,可以在构建时添加命令,查看仓库中可用的PostgreSQL版本,确认仓库是否正确提供15.5:
RUN zypper se -s postgresql
构建时会输出所有可用的PostgreSQL包版本,检查是否存在15.5的条目。
内容的提问来源于stack exchange,提问作者Rashmi Patil
相关产品推荐
相关产品推荐

