docker compose构建单个容器

docker compose构建单个容器,docker,docker-compose,Docker,Docker Compose,使用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 ---&

使用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

如果您想运行在docker compose文件中重新创建一个特定的服务,您可以按照@dnephin建议的方法执行,如

$ docker-compose up -d --force-recreate --no-deps --build service_name
假设您的docker-compose.yml文件如下

version: '3'
services:
  service_1:
      .....
  service_2:
      .....
docker compose up-d——无dep——构建

您可以在docker compose中添加
--no start
标志,然后再开始,因为您将只构建一个服务。

如果它依赖于某个东西,它将运行它所依赖的所有东西,那么这将不起作用。事实上,问题在于重新创建它,我已经更新了答案@MariusVanNieuwenhuyseUse
docker compose build——无缓存elasticsearch
以强制重建现有图像
docker-compose up -d --no-deps --build <service_name>