我有一个可以工作的Dockerfile,但是如果我向apt-get install
命令添加任何新的依赖项,它就会失败。例如,这有效:
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
我可以将python-mysqldb
替换为其他任何内容,git-core
,例如,它仍然会失败并显示相同的错误消息:
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.
有关添加新依赖项的原因的任何想法都会导致失败以及如何修复它?
答案 0 :(得分:3)
我发现您需要加入更新&将命令安装到同一个RUN块中。
例如:
RUN apt-get update \
&& apt-get install -y \
python \
...
apache2 \
python-mysqldb
根据描述问题的this post
默认情况下,Docker会缓存您的命令以减少构建时间 图片。除非在这些命令之前有任何变化(或者在此之前) 同一行)。
与此同时,我注意到AWS examples将它们分开,就像你拥有它们一样。所以我不知道它是否在那里有所不同。也许他们默认禁用缓存。