Compose: Agregue una opción sin caché para compilar docker-compose

Creado en 2 mar. 2015  ·  13Comentarios  ·  Fuente: docker/compose

Sería útil si uno pudiera hacer esto
docker-compose build service1 service2 --no-cache

Comentario más útil

Me acabo de dar cuenta de que la sintaxis es
docker-compose build --no-cache service1 service2

Todos 13 comentarios

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...

Último comando de reconstrucción de composición para mí

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

¿Fue útil esta página
0 / 5 - 0 calificaciones