docker compose build único contêiner

98

Usando Compose, se eu executar docker-compose build, ele reconstruirá todos os contêineres:

> docker-compose build
Building elasticsearch
Step 1 : FROM elasticsearch:2.1
 ---> a05cc7ed3f32
Step 2 : RUN /usr/share/elasticsearch/bin/plugin install analysis-phonetic
 ---> Using cache
 ---> ec07bbdb8a18
Successfully built ec07bbdb8a18
Building search
Step 1 : FROM php:5.5.28-fpm
 ---> fcd24d1058c0
...

Mesmo ao reconstruir usando o cache, isso leva tempo. Então, minha pergunta é:

Existe uma maneira de reconstruir apenas um contêiner específico?

Marc Perrin-Pelletier
fonte

Respostas:

200

Sim, use o nome do serviço:

docker-compose build elasticsearch
dnephin
fonte
18
docker-compose up -d --no-deps --build <service_name>

Fonte

FTM
fonte
3

se você deseja executar e recriar um serviço específico dentro de seu arquivo docker-compose, pode fazê-lo da mesma maneira que @dnephin propôs, como

$ docker-compose up -d --force-recreate --no-deps --build service_name

Suponha que seu arquivo docker-compose.yml seja como

version: '3'
services:
  service_1:
      .....
  service_2:
      .....
Rambou
fonte
Isso não funcionaria, se dependesse de algo, executaria tudo de que depende.
jemiloii
Na verdade, a pergunta era sobre recriar isso, atualizei a resposta @MariusVanNieuwenhuyse
Rambou
-1

Você tem que fazer isso manualmente usando a tag de imagem. Mais detalhes aqui .

TopperH
fonte