2017-09-25 12 views
0

Il s'agit probablement d'un doublon, mais toutes les réponses que j'ai vues n'ont pas fonctionné pour moi. J'utilise docker (17.06.2-ce), docker-composer (1.16.1).Flux de travail de rafraîchissement rapide du conteneur docker

J'ai une image de solr que j'utilise à des fins de développement et de test (et sur CI aussi). Lorsque je modifie l'image, j'ai besoin de reconstruire l'image et de recréer les conteneurs, afin que les conteneurs utilisent la dernière image possible, qui, à son tour, prend le dernier code possible du repo local.

J'ai créé ma propre image basée sur l'image solr-docker officielle. Le repo est un dossier avec des étapes supplémentaires que j'applique à l'image, comme copier des fichiers et apporter des modifications aux configs existantes en utilisant sed. Je travaille dans le repo et j'ai les conteneurs en arrière-plan.

Quand je dois rafraîchir les conteneurs, je le fais habituellement ces commandes

sudo docker-compose stop sudo docker rm $(sudo docker ps -a -q) sudo docker rmi $(sudo docker images -q) sudo docker-compose up

Les 4 commandes ci-dessus est la seule façon ça marche pour moi. Toutes les autres approches que j'ai essayées n'ont pas reconstruit les images et n'ont pas créé les conteneurs basés sur les nouvelles images reconstruites. En d'autres termes, le code dans l'image serait périmé.

Questions:

  1. Est-il possible de rafraîchir l'image + reconstruire le conteneur en utilisant moins de commandes?
  2. Chaque fois que je cours au-dessus de 4 commandes, docker téléchargerait ~ 500 Mo de dépendances. Est-il possible de ne pas les télécharger et juste reconstruire l'image en utilisant le code local mis à jour et les dépendances en cache existantes?
+0

Quelles sont les dépendances téléchargées? Ils ne doivent pas être des images car le docker met en cache les images de base localement – yamenk

Répondre

1

Je fais habituellement docker-compose rm && docker-compose build && docker-compose up pour recréer des conteneurs docker: il ne téléchargera pas 500mb.

0

Vous pouvez utiliser docker-compose down qui effectue les opérations suivantes:

down   Stop and remove containers, networks, images, and volumes 

Par conséquent, la commande à utiliser sera: docker-compose down --rmi local && docker-compose up

L'option --rmi local supprimera l'image construite et forçant ainsi une reconstruction sur up