Ce serait utile si on pouvait le faire
docker-compose build service1 service2 --no-cache
Je viens de réaliser que la syntaxe est
docker-compose build --no-cache service1 service2
je cherchais ça !!
Voici ma façon propre de reconstruire ma pile de composition
cd (dans votre répertoire de composition)
docker-compose rm --all &&
docker-compose pull &&
docker-compose build --no-cache &&
docker-compose up -d --force-recreate &&
Avoir du sens ? Je recherche les meilleures pratiques ici :)
+1
Le --force-recreate est-il nécessaire ?
+1
Je pense que --force-recreate
est le meilleur choix
--force-recreate
n'est pas nécessaire, car tous les conteneurs viennent d'être supprimés.
Si vous voulez tout effacer, down
est préférable à rm
, car il peut également supprimer des volumes et des réseaux.
$ docker-compose down -h
Stops containers and removes containers, networks, volumes, and images
created by `up`.
By default, the only things removed are:
- Containers for services defined in the Compose file
- Networks defined in the `networks` section of the Compose file
- The default network, if one is used
Networks and volumes defined as `external` are never removed.
Usage: down [options]
Options:
--rmi type Remove images. Type must be one of:
'all': Remove all images used by any service.
'local': Remove only images that don't have a custom tag
set by the `image` field.
-v, --volumes Remove named volumes declared in the `volumes` section
of the Compose file and anonymous volumes
attached to containers.
--remove-orphans Remove containers for services not defined in the
Compose file
Je l'utilise depuis 3 mois et il répond parfaitement à mes besoins.
Je ne veux pas supprimer : les réseaux, les volumes et les images
echo && echo "PikWi says: docker-compose stop" && \
docker-compose stop && \
echo "PikWi says: docker-compose rm ..." && \
docker-compose rm -f --all && \
echo "PikWi says: docker-compose pull" && \
docker-compose pull && \
echo "PikWi says: docker-compose build ..." && \
docker-compose build --no-cache && \
echo "PikWi says: docker-compose up ..." && \
docker-compose up -d --force-recreate --remove-orphans
Je serai heureux d'utiliser quelque chose de plus court ou de plus propre. Je suis tous les meilleurs pratiques :)
Acclamations!
--no-cache ne fonctionne pas.... quelle est l'alternative --force-rebuild continue d'utiliser le cache :(
@julianfrank Je ne sais pas ce que vous vouliez dire par --no-cache does not work
mais peut-être que vous l'exécutez comme
docker-compose build SERVICE_NAME --no-cache
alors qu'il doit en fait être docker-compose build --no-cache SERVICE_NAME
?
Lorsque les étapes sont les mêmes pour les différents services en cours de construction, il utilise toujours le cache du conteneur qui vient d'être construit plus tôt dans le script... J'ai trouvé une alternative pour utiliser les mêmes étapes lorsque je veux utiliser le cache et changer l'ordre pour forcer le saut du cache usage...
si vous étiez foutu par le cache et que vous n'utilisiez pas de cache à la place, vous insérez de nouvelles commandes dans le fichier docker pour forcer le renouvellement de la couche de cache, envoyez un pouce levé, la gestion du cache dans docker nécessite un refactor ... ou fonctionne vraiment en nettoyant les couches de cache
En effet, ça ne marche pas...
Vous pouvez apporter toutes les modifications sur un Dockerfile pour un service, et il n'y a aucune réflexion sur docker-compose build --no-cache
docker-compose up -d --build --no-deps web
reconstruira le conteneur pour le service nommé "web" dans votre docker-compose.yml. Une fois la reconstruction terminée, elle redémarrera le conteneur spécifié.
--no-deps
limitera la reconstruction au nom du service spécifié dans la commande.
De plus, cette commande reconstruira le conteneur si vous copiez des fichiers dans le conteneur et que l'un des fichiers que vous copiez a changé - comme requirements.txt
pour votre information
docker-compose up --force-recreate --build
Il n'y a apparemment pas d'option --no-cache pour la commande up
On dirait que force-recreate n'utilise pas cette option. S'il vous plait corrigez moi si je me trompe!
Donc la meilleure approche serait que je fasse ça...
Supprime le conteneur et les images> construit des images sans cache de construction> docker-compose détaché> suivez les journaux (afin que vous puissiez en sortir ctrl+c
)
docker-compose build --force-rm --no-cache && docker-compose up --detach && docker-compose logs -f
Les fenêtres:
docker-compose build --force-rm --no-cache ; docker-compose up --detach ; docker-compose logs -f
Commentaire le plus utile
Je viens de réaliser que la syntaxe est
docker-compose build --no-cache service1 service2