You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建时从Debian源更新,无法安装PostgreSQL 9.5

问题分析与快速解决

核心问题出在哪?

其实这和你安装的Docker版本完全没关系!问题根源在你的Dockerfile第一行:FROM python:2.7这个基础镜像默认是基于Debian Stretch发行版构建的,所以容器内部的apt软件源自然是Debian的,而你要装的postgresql-client-9.5是Ubuntu Xenial专属的软件包,Debian Stretch的源里根本找不到它(Debian Stretch对应的postgresql-client版本是9.6),这就是为啥会报“没有安装候选”的错误。

几种可行的解决办法

你可以根据自己的需求选一个:

1. 切换到基于Ubuntu Xenial的Python镜像(最推荐)

直接把Dockerfile的第一行改成基于Ubuntu 16.04(Xenial)的Python 2.7镜像,这样容器里就会用Ubuntu的软件源,postgresql-client-9.5就能正常安装了:

FROM python:2.7-xenial

这个官方镜像就是专门为Ubuntu Xenial打造的,完美匹配你的环境需求。

2. 安装Debian Stretch兼容的postgresql-client版本

如果不想换基础镜像,也可以安装Debian Stretch源里有的postgresql-client 9.6版本,它和你的Postgres 9.5服务端完全兼容,功能上没影响:

RUN apt-get update && apt-get install -qq -y build-essential libpq-dev postgresql-client-9.6 --fix-missing --no-install-recommends

3. 不推荐:在Debian容器里混加Ubuntu源(风险高)

要是你铁了心要在Debian容器里装Ubuntu的包,也可以手动加Ubuntu Xenial的源,但这种跨发行版混源的做法很容易导致依赖冲突,后续出问题很难排查,实在不建议用。如果非要试,代码是这样:

RUN echo "deb http://archive.ubuntu.com/ubuntu xenial main universe" >> /etc/apt/sources.list.d/ubuntu.list && \
    apt-get update && \
    apt-get install -qq -y build-essential libpq-dev postgresql-client-9.5 --fix-missing --no-install-recommends

验证方法

改完Dockerfile之后,重新构建服务就行:

docker-compose build project1

如果用第一种方案,你会看到构建过程里的apt源变成Ubuntu Xenial的,postgresql-client-9.5也能顺利安装完成。

内容的提问来源于stack exchange,提问作者makkasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:44:15