2015-12-08 111 views
1

我有一个可用的Dockerfile,但是如果我向apt-get install命令添加任何新的依赖关系,它将失败。例如,这个工程:Docker Debian安装失败

FROM debian:stable 

RUN apt-get update 

RUN apt-get install -y \ 
    python \ 
    ... 
    apache2 

但如果我试试这个,它失败:

FROM debian:stable 

RUN apt-get update 

RUN apt-get install -y \ 
    python \ 
    ... 
    apache2 
    python-mysqldb 

我可以用别的,git-core更换python-mysqldb,例如,它仍然会失败与同错误消息:

Unable to correct missing packages. 
E: Failed to fetch http://security.debian.org/pool/updates/main/l/linux/linux-libc-dev_3.16.7-ckt11-1+deb8u5_amd64.deb 404 Not Found [IP: 149.20.20.6 80] 

E: Aborting install. 

有关为什么添加新的依赖项会导致失败以及如何解决它的任何想法?

回答

3

我发现你需要将更新&安装命令加入到同一个RUN块中。

如:

RUN apt-get update \ 
&& apt-get install -y \ 
    python \ 
    ... 
    apache2 \ 
    python-mysqldb 

根据this post描述了这个问题

默认情况下,泊坞窗缓存你的命令,以减少时间花楼 图像。除非这些命令(或 同一行)之前有任何更改。

同时,我注意到AWS examples将它们分开,就像您拥有它们一样。所以我不知道如果它在那里工作不同。也许他们默认禁用缓存。