Compose: Adicionar uma opção sem cache à compilação do docker-compose

Criado em 2 mar. 2015  ·  13Comentários  ·  Fonte: docker/compose

Seria útil se alguém pudesse fazer isso
docker-compose build service1 service2 --no-cache

Comentários muito úteis

Acabei de perceber que a sintaxe é
docker-compose build --no-cache service1 service2

Todos 13 comentários

Acabei de perceber que a sintaxe é
docker-compose build --no-cache service1 service2

Eu estava procurando por isso !!

Aqui está minha maneira limpa de reconstruir minha pilha de composição

cd (para o seu DIR de composição)

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

Faz sentido? Estou procurando as melhores práticas aqui :)

+1
O --force-recreate é necessário?

+1
Acho que --force-recreate é a melhor escolha

--force-recreate é desnecessário, pois todos os containers acabaram de ser removidos.

Se você quiser limpar _tudo_, down é melhor que rm , porque também pode remover volumes e 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

Estou usando isso desde 3 meses e é sólido como rocha para minhas necessidades.
Não quero remover: redes, volumes e imagens

        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

Ficarei feliz em usar algo mais curto ou mais limpo. Eu sou todas as melhores práticas :)

Saúde!

--no-cache não funciona.... qual é a alternativa --force-rebuild continua a usar cache :(

@julianfrank Não tenho certeza do que você quis dizer com --no-cache does not work mas talvez você o execute como
docker-compose build SERVICE_NAME --no-cache
quando na verdade tem que ser docker-compose build --no-cache SERVICE_NAME ?

Quando as etapas são as mesmas nos diferentes serviços sendo compilados, ele ainda usa o cache do contêiner criado anteriormente no script... uso...

se você foi fodido pelo cache e, em vez de usar nenhum cache, insira novos comandos no arquivo docker para forçar a renovação da camada de cache envie polegares para cima, o manuseio do cache no docker precisa de uma refatoração ... ou funciona realmente limpando as camadas de cache

De fato, não funciona...
Você pode fazer todas as alterações em um Dockerfile para um serviço e não há reflexos em docker-compose build --no-cache

docker-compose up -d --build --no-deps web reconstruirá o contêiner para o serviço chamado "web" em seu docker-compose.yml. Depois que a reconstrução for concluída, ela reiniciará o contêiner especificado.

--no-deps limitará a reconstrução ao nome do serviço especificado no comando.

Além disso, este comando reconstruirá o contêiner se você estiver copiando arquivos para o contêiner e um dos arquivos copiados tiver sido alterado - como requirements.txt

Para sua informação
docker-compose up --force-recreate --build

Aparentemente, não há opção --no-cache para o comando up
Parece que a recriação forçada não usa essa opção. Por favor corrija-me se eu estiver errado!

Então, a melhor abordagem seria eu fazer isso ...

Comando de reconstrução de composição final para mim

Remove contêiner e imagens > cria imagens sem cache de compilação > docker-compose up desanexado > segue os logs (para que você possa ctrl+c fora dele)

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

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

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

bergtwvd picture bergtwvd  ·  3Comentários

bitver picture bitver  ·  3Comentários

dazorni picture dazorni  ·  3Comentários

leiblix picture leiblix  ·  3Comentários

29e7e280-0d1c-4bba-98fe-f7cd3ca7500a picture 29e7e280-0d1c-4bba-98fe-f7cd3ca7500a  ·  3Comentários