我有一个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.
关于为什么添加新的依赖项会导致失败以及如何修复它,有什么想法吗?
我发现您需要加入更新&install命令到同一RUN块中。
例如:
RUN apt-get update
&& apt-get install -y
python
...
apache2
python-mysqldb
根据这篇描述问题的帖子
默认情况下,Docker会缓存您的命令,以减少构建时间图像。除非在发出此类命令之前(或同一行)。
同时,我注意到AWS示例将它们分开,正如您所看到的那样。所以我不知道那里的效果是否不同。也许他们默认情况下会禁用缓存。