Comment éviter de réinstaller les paquets lors de la construction de Docker image pour Python projets?

Mon Dockerfile est quelque chose comme

FROM my/base

ADD . /srv
RUN pip install -r requirements.txt
RUN python setup.py install

ENTRYPOINT ["run_server"]

Chaque fois que j'construire une nouvelle image, dépendances doivent être réinstallés, qui peut être très lente dans ma région.

Un sens, je pense à cache les paquets qui ont été installés à l'est de remplacer la my/base image avec de nouvelles images comme ceci:

docker build -t new_image_1 .
docker tag new_image_1 my/base

Alors, la prochaine fois je construire avec ce Dockerfile, mon/base a déjà des packages installés.

Mais cette solution a deux problèmes:

  1. Il n'est pas toujours possible de remplacer une image de base
  2. L'image de base grandir et de plus grand que de nouvelles images sont superposées sur elle

Alors quelle meilleure solution pourrais-je utiliser pour résoudre ce problème?

EDIT##:

Quelques informations sur le menu fixe sur ma machine:

  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
  • Ne vous supprimez des images intermédiaires après avoir terminé la construction de votre image?
  • Bien sûr que non, mais ce n'est pas pertinent parce que quand j'ai de la reconstruction d'une image, je suis toujours en se basant sur l'origine my/base
InformationsquelleAutor satoru | 2014-08-14