docker撰写构建单个容器

Mar*_*ier 70 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
 ---> ec07bbdb8a18
Successfully built ec07bbdb8a18
Building search
Step 1 : FROM php:5.5.28-fpm
 ---> fcd24d1058c0
...
Run Code Online (Sandbox Code Playgroud)

即使使用缓存进行重建,也需要时间.所以我的问题是:

有没有办法只重建一个特定的容器?

dne*_*hin 141

是的,使用服务名称:

docker-compose build elasticsearch
Run Code Online (Sandbox Code Playgroud)

  • 使用 docker-compose build --no-cache elasticsearch 强制重建现有镜像 (3认同)

FTM*_*FTM 32

docker-compose up -d --no-deps --build <service_name>
Run Code Online (Sandbox Code Playgroud)

来源

  • 为什么你使用-no-deps? (2认同)

Ram*_*bou 13

如果你想在你的 docker-compose 文件中运行重新创建一个特定的服务,你可以像@dnephin 建议的那样做,比如

$ docker-compose up -d --force-recreate --no-deps --build service_name
Run Code Online (Sandbox Code Playgroud)

假设你的 docker-compose.yml 文件就像

version: '3'
services:
  service_1:
      .....
  service_2:
      .....
Run Code Online (Sandbox Code Playgroud)