![](/img/trans.png)
[英]How to avoid reinstalling packages when building Docker image for Python projects?
[英]Avoid contantly rebuild docker image
我正在使用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
在需求中,我放置了plotly
, pytest
和python-igraph
。 事实是, python-igraph
卡在这部分上
Running setup.py bdist_wheel for python-igraph: started
Running setup.py bdist_wheel for python-igraph: still running...
在相当长的一段时间内,但最终它会拉取数据并生成图像。 但是,如此长时间每次重建项目都是不可接受的。
提取彼此不依赖的模块的正确方法是什么?
当我写最后一句话时,我知道发生了什么。 每次我重建应用程序时,请COPY . /app
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
。 无论如何,我要离开这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.