Docker子映像不会继承基础映像中安装的软件包

时间:2018-12-10 11:04:36

标签: docker

我需要具有以下Docker映像的层次结构:

“基本”图片:

FROM python:3.5-slim-stretch
RUN apt install -y python3-enchant enchant libpq-dev gcc && apt clean

同样从“基础”继承的子图像:

FROM myprivaterepo:30999/base-image
ENV PATH /usr/lib/postgresql/9.5/bin:$PATH
RUN pip3 install -r requirements.txt

requirements.txt包含打算用gcc构建的软件包,其中一个需要找到pg_config软件包中包含的libpq-dev二进制文件。问题是,即使它继承并开始从基本映像正常构建,也无法找到它们。 (尽管如果我将它们安装在子映像中,则可以正常工作-但这不是我想要的。)

知道我在做什么错吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

您是否曾经在没有该软件的情况下构建了基础映像?然后,这可能是docker映像的缓存问题,即您的子映像基于基础映像的旧缓存版本。

验证以下哈希是否匹配:

  • 构建基础图像将在最后一行打印:

Successfully built <hash>

  • 首先创建您的子图像:

Step 1/x : FROM myprivaterepo:30999/base-image ---> <hash>

<hash>应该相同。