Sería útil si uno pudiera hacer esto
docker-compose build service1 service2 --no-cache
Me acabo de dar cuenta de que la sintaxis es
docker-compose build --no-cache service1 service2
Yo estaba buscando esto !!
Aquí está mi forma limpia de reconstruir mi pila de composición
cd (a su DIR de composición)
docker-compose rm --all &&
docker-compose pull &&
docker-compose build --no-cache &&
docker-compose up -d --force-recreate &&
¿Tener sentido? Estoy buscando las mejores prácticas aquí :)
+1
¿Se necesita --force-recreate?
+1
Creo que --force-recreate
es la mejor opción
--force-recreate
no es necesario, porque todos los contenedores acaban de eliminarse.
Si desea borrar _todo_, down
es mejor que rm
, porque también puede eliminar volúmenes y redes.
$ 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
Lo estoy usando desde hace 3 meses y es sólido como una roca para mis necesidades.
No quiero eliminar: redes, volúmenes e imágenes
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
Estaré encantado de usar algo más corto o más limpio. Soy toda la mejor práctica :)
¡Salud!
--no-cache no funciona... cuál es la alternativa --force-rebuild sigue usando caché :(
@julianfrank No estoy seguro de lo que quiso decir con --no-cache does not work
pero tal vez lo ejecute como
docker-compose build SERVICE_NAME --no-cache
cuando en realidad tiene que ser docker-compose build --no-cache SERVICE_NAME
?
Cuando los pasos son los mismos en los diferentes servicios que se construyen, todavía usa la memoria caché del contenedor recién creado anteriormente en el script... Desarrollé una alternativa para usar los mismos pasos cuando quiero usar la memoria caché y cambiar el orden para forzar la omisión de la memoria caché. uso...
si el caché lo jodió y, en su lugar, no usa caché, inserta nuevos comandos en el archivo docker para forzar la renovación de la capa de caché, envíe pulgares hacia arriba, el manejo de caché en docker necesita un refactor ... o funciona realmente limpiando las capas de caché
La verdad es que no funciona...
Puede realizar todos los cambios en un Dockerfile para un servicio y no hay reflejos en docker-compose build --no-cache
docker-compose up -d --build --no-deps web
reconstruirá el contenedor para el servicio llamado "web" en su docker-compose.yml. Una vez finalizada la reconstrucción, se reiniciará el contenedor especificado.
--no-deps
limitará la reconstrucción al nombre del servicio especificado en el comando.
Además, este comando reconstruirá el contenedor si está copiando archivos en el contenedor y uno de los archivos que copia ha cambiado, como requisitos.txt
para su información
docker-compose up --force-recreate --build
Aparentemente no existe la opción --no-cache para el comando up
Parece que force-recreate no usa esta opción. ¡Por favor, corríjame si estoy equivocado!
Así que el mejor enfoque sería para mí hacer esto...
Elimina el contenedor y las imágenes> crea imágenes sin caché de compilación> docker-compose up desacoplado> siga los registros (para que pueda ctrl+c
fuera de él)
docker-compose build --force-rm --no-cache && docker-compose up --detach && docker-compose logs -f
Ventanas:
docker-compose build --force-rm --no-cache ; docker-compose up --detach ; docker-compose logs -f
Comentario más útil
Me acabo de dar cuenta de que la sintaxis es
docker-compose build --no-cache service1 service2