Ответ 1
Да, используйте имя службы:
docker-compose build elasticsearch
Используя Compose, если я запустил docker-compose build
, она восстановит все контейнеры:
> 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
...
Даже при перестройке с использованием кеша это требует времени. Поэтому мой вопрос:
Есть ли способ перестроить только один конкретный контейнер?
Да, используйте имя службы:
docker-compose build elasticsearch
Вы делаете это вручную, используя тег изображения. Подробнее здесь.
если вы хотите запустить определенную службу внутри своего файла для создания докеры, вы можете сделать это так же, как предлагалось @dnephin, например
$ docker-compose.exe up -d service_name
Предположим, что ваш файл docker-compose.yml похож на
version: '3'
services:
service_1:
.....
service_2:
.....
! Для этого служба, которую вы хотите вызвать, не должна зависеть от других сервисов.