我的 Dockerfile 类似于
FROM my/base ADD . /srv RUN pip install -r requirements.txt RUN python setup.py install ENTRYPOINT ["run_server"]
每次构建新映像时,都必须重新安装依赖项,这在我所在的地区可能非常慢。
cache对于已安装的软件包,我想到的一种方法是my/base用较新的图像覆盖图像,如下所示:
cache
my/base
docker build -t new_image_1 . docker tag new_image_1 my/base
所以下次我用这个 Dockerfile 构建时,my/base 已经安装了一些包。
但是这个解决方案有两个问题:
那么我可以使用什么更好的解决方案来解决这个问题呢?
关于我机器上 docker 的一些信息:
☁ test docker version Client version: 1.1.2 Client API version: 1.13 Go version (client): go1.2.1 Git commit (client): d84a070 Server version: 1.1.2 Server API version: 1.13 Go version (server): go1.2.1 Git commit (server): d84a070 ☁ test docker info Containers: 0 Images: 56 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Dirs: 56 Execution Driver: native-0.2 Kernel Version: 3.13.0-29-generic WARNING: No swap limit support
尝试构建一个看起来像这样的 Dockerfile:
FROM my/base WORKDIR /srv ADD ./requirements.txt /srv/requirements.txt RUN pip install -r requirements.txt ADD . /srv RUN python setup.py install ENTRYPOINT ["run_server"]
requirements.txtDocker将在 pip install 期间使用缓存,只要您.不对 . 这是一个例子。
requirements.txt
.
这是一个简单的Hello, World!程序:
Hello, World!
$ tree .