【问题标题】:Avoid contantly rebuild docker image避免不断重建 docker 镜像
【发布时间】:2018-09-24 19:10:16
【问题描述】:

我正在使用 Docker 构建一个应用程序。我的 Dockerfile 看起来像这样:

FROM python:3.7.0
WORKDIR /app
COPY . /app
RUN apt-get -y update && apt-get -y install apt-utils build-essential libxml2-dev zlib1g-dev python-dev python-pip pkg-config libffi-dev libcairo-dev
RUN pip install -r requirements.txt
CMD ["./run"]

我的项目结构:

.
├── Dockerfile
├── requirements.txt
├── run
└── src
    ├── stuff

在需求中,我输入了plotlypytestpython-igraph。问题是,python-igraph 卡在这部分

Running setup.py bdist_wheel for python-igraph: started
Running setup.py bdist_wheel for python-igraph: still running...

很长一段时间,但最终它会提取数据并构建图像。但是,每次都重建项目那么长时间是不可接受的。

以某种方式提取不相互依赖的模块的正确方法是什么?

【问题讨论】:

    标签: python docker plotly igraph layer


    【解决方案1】:

    当我写最后一句话时,我明白发生了什么。每次我重建应用程序时,COPY . /app 都会“读取”新文件,并且由于 docker 层,当第一层更改时,必须重建所有下一层。现在,我的 Dockerfile 看起来像这样:

    FROM python:3.7.0
    RUN apt-get -y update && apt-get -y install apt-utils build-essential libxml2-dev zlib1g-dev python-dev python-pip pkg-config libffi-dev libcairo-dev
    WORKDIR /app
    COPY requirements.txt /app
    RUN pip install -r requirements.txt
    COPY . /app
    CMD ["./run"]
    

    不再需要每次下载python-igraph。无论如何,我将把它留在这里。

    【讨论】:

      猜你喜欢
      • 2018-01-22
      • 2022-11-10
      • 1970-01-01
      • 2020-11-04
      • 2021-09-20
      • 2019-08-03
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多