Compose: Fügen Sie dem Docker-Compose-Build eine No-Cache-Option hinzu

Erstellt am 2. März 2015  ·  13Kommentare  ·  Quelle: docker/compose

Es wäre hilfreich, wenn man dies tun könnte
docker-compose build service1 service2 --no-cache

Hilfreichster Kommentar

Habe gerade festgestellt, dass die Syntax ist
docker-compose build --no-cache service1 service2

Alle 13 Kommentare

Habe gerade festgestellt, dass die Syntax ist
docker-compose build --no-cache service1 service2

Das habe ich gesucht!!

Hier ist mein sauberer Weg, um meinen Compose-Stack neu aufzubauen

cd (in Ihr Kompositionsverzeichnis)

 docker-compose rm --all &&
 docker-compose pull &&
 docker-compose build --no-cache &&
 docker-compose up -d --force-recreate &&

Sinn ergeben? Ich suche hier nach Best Practice :)

+1
Wird --force-recreate benötigt?

+1
Ich denke, --force-recreate ist die beste Wahl

--force-recreate ist unnötig, da alle Container gerade entfernt wurden.

Wenn Sie _alles_ löschen möchten, ist down besser als rm , da es auch Volumes und Netzwerke entfernen kann.

$ 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

Ich benutze es seit 3 ​​Monaten und es ist absolut solide für meine Bedürfnisse.
Ich möchte nicht entfernen: Netzwerke, Volumes und 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

Ich werde froh sein, etwas Kürzeres oder Saubereres zu verwenden. Ich bin alles Best Practice :)

Prost!

--no-cache funktioniert nicht .... was ist die Alternative --force-rebuild verwendet weiterhin den Cache :(

@julianfrank Ich bin mir nicht sicher, was du mit --no-cache does not work gemeint hast, aber vielleicht führst du es so aus
docker-compose build SERVICE_NAME --no-cache
wenn es eigentlich docker-compose build --no-cache SERVICE_NAME sein muss?

Wenn die Schritte für die verschiedenen Dienste, die erstellt werden, gleich sind, wird immer noch der Cache aus dem Container verwendet, der gerade zuvor im Skript erstellt wurde ... Ich habe eine Alternative ausgearbeitet, um dieselben Schritte zu verwenden, wenn ich den Cache verwenden und die Reihenfolge ändern möchte, um das Überspringen des Caches zu erzwingen Verwendungszweck...

Wenn Sie vom Cache gestört wurden und stattdessen keinen Cache verwenden, fügen Sie neue Befehle in die Docker-Datei ein, um eine Erneuerung der Cache-Ebene zu erzwingen. Senden Sie Daumen hoch, die Cache-Behandlung in Docker muss umgestaltet werden ... oder funktioniert wirklich, indem Sie die Cache-Ebenen bereinigen

Tatsächlich funktioniert es nicht...
Sie können alle Änderungen an einem Dockerfile für einen Dienst vornehmen, und es gibt keine Überlegungen zu docker-compose build --no-cache

docker-compose up -d --build --no-deps web erstellt den Container für den Dienst namens „web“ in Ihrer docker-compose.yml neu. Sobald die Neuerstellung abgeschlossen ist, wird der angegebene Container neu gestartet.

--no-deps beschränkt die Neuerstellung auf den Namen des im Befehl angegebenen Dienstes.

Außerdem erstellt dieser Befehl den Container neu, wenn Sie Dateien in den Container kopieren und sich eine der hineinkopierten Dateien geändert hat – wie z. B. „requirements.txt“.

FYI
docker-compose up --force-recreate --build

Es gibt anscheinend keine Option --no-cache für den up-Befehl
Sieht so aus, als würde force-recreate diese Option nicht verwenden. Bitte korrigiert mich, wenn ich falsch liege!

Also am besten würde ich das so machen...

Der ultimative Compose-Rebuild-Befehl für mich

Entfernt Container und Images > erstellt Images ohne Build-Cache > Docker-Compose-Up getrennt > folgt den Protokollen (damit Sie ctrl+c daraus machen können)

docker-compose build --force-rm --no-cache && docker-compose up --detach && docker-compose logs -f

Fenster:
docker-compose build --force-rm --no-cache ; docker-compose up --detach ; docker-compose logs -f

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen