Debian的httpredir.debian.org
镜像服务导致我的Docker版本经常失败,因为apt-get无法下载软件包或连接到服务器或类似的东西。我是唯一一个遇到这个问题的人吗?问题是我的,Debian的还是Docker的?我有什么可以做的吗?
我在debian:jessie
上构建了几个Dockerfile,Debian默认使用httpredir.debian.org
服务来查找使用apt-get等时的最佳镜像。几个月前,httpredir给了我持续的悲痛在尝试构建图像时。当在Dockerfile中运行时,使用httpredir的apt-get几乎总是会在一两个包上搞乱,整个构建都会失败。错误通常看起来像镜子已经过时或以某种方式腐败。我最终通过添加以下行停止在我的所有Dockerfiles中使用httpredir:
# don't use httpredir.debian.org mirror as it's very unreliable
RUN echo deb http://ftp.us.debian.org/debian jessie main > /etc/apt/sources.list
今天又回到了再次尝试httpredir.debian.org
,因为ftp.us.debian.org
已经过时了我需要的软件包,果然它在Docker Hub上失败了:
Failed to fetch http://httpredir.debian.org/debian/pool/main/n/node-retry/node-retry_0.6.0-1_all.deb Error reading from server. Remote end closed connection [IP: 128.31.0.66 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
这是我在这种情况下运行的apt-get命令,虽然我和其他许多人一起遇到过它:
RUN apt-get update && apt-get install -y \
build-essential \
chrpath \
libssl-dev \
libxft-dev \
libfreetype6 \
libfreetype6-dev \
libfontconfig1 \
libfontconfig1-dev \
curl \
bzip2 \
nodejs \
npm \
git
感谢您提供的任何帮助。
答案 0 :(得分:5)
我今天遇到了同样的问题,当重建我暂时没有构建的Dockerfile时。
在apt-get install
之前添加此行似乎可以解决问题:
RUN apt-get clean
在这里有了想法:
答案 1 :(得分:3)
关于this问题的讨论,以及我在几个月内反复处理这个问题的经验,def toProvider(dbIn: PostgresDriver.backend.DatabaseDef) = {
new DatabaseConfig[JdbcProfile] {
override def db: JdbcProfile#Backend#Database = dbIn
override def config: Config = None.orNull // unused
override def driverIsObject: Boolean = true
override def driverName: String = "org.postgresql.Driver"
override val driver: JdbcProfile = ExtendedPostgresDriver
}
new DatabaseConfigProvider {
// Cast is necessary, otherwise cannot get to compile
override def get[P <: BasicProfile]: DatabaseConfig[P] = config.asInstanceOf[DatabaseConfig[P]]
}
}
似乎本身没有帮助,但事实上你是这样的。重建(即httpredir通常选择不同的镜像)让它工作。确实毫无例外地手动触发重建或两次重建导致成功构建。