2015-12-08 108 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將它們分開,就像您擁有它們一樣。所以我不知道如果它在那裏工作不同。也許他們默認禁用緩存。