docker-compose build 是 Docker Compose 中用于根据 docker-compose.yml 文件中的配置构建服务镜像的命令。以下是该命令的详细说明及常用参数:


基本用法

docker compose build [OPTIONS] [SERVICE...]
  • SERVICE(可选):指定要构建的服务名称。如果不指定,则为所有定义了 build 配置的服务构建镜像。
  • OPTIONS:可选参数,用于控制构建行为。

常用参数

1. --no-cache

  • 作用:不使用构建缓存,强制从头开始构建镜像。
  • 示例
    docker compose build --no-cache
    

2. --pull

  • 作用:始终尝试从镜像仓库拉取最新的基础镜像(即忽略本地已有的基础镜像)。
  • 示例
    docker compose build --pull
    

3. --build-arg <KEY=VALUE>

  • 作用:传递构建时的变量(类似于 docker build--build-arg 选项)。
  • 示例
    docker compose build --build-arg NODE_ENV=production
    

4. --progress <STYLE>

  • 作用:指定构建进度的输出样式(支持 autoplaintty)。
  • 示例
    docker compose build --progress plain
    

5. --parallel

  • 作用:并行构建多个服务镜像(需 Docker Compose 版本 3.4+ 支持)。
  • 示例
    docker compose build --parallel
    

6. --no-rm

  • 作用:构建失败时保留中间容器(默认情况下,中间容器会在构建完成后删除)。
  • 示例
    docker compose build --no-rm
    

示例

1. 构建所有服务

根据 docker-compose.yml 中的 build 配置,为所有服务构建镜像:

docker compose build

2. 构建特定服务

仅为 web 服务构建镜像:

docker compose build web

3. 强制从头构建(不使用缓存)

docker compose build --no-cache

4. 拉取最新基础镜像并构建

docker compose build --pull

5. 传递构建参数

通过 --build-arg 传递 NODE_ENV=production 变量:

docker compose build --build-arg NODE_ENV=production

6. 并行构建多个服务

docker compose build --parallel

docker-compose.yml 中的 build 配置

docker-compose.yml 文件中,build 配置项用于定义镜像的构建方式。例如:

version: '3.8'
services:
  web:
    build:
      context: ./app  # 构建上下文路径
      dockerfile: Dockerfile  # Dockerfile 文件路径(可选,默认为 Dockerfile)
      args:
        - APP_ENV=production  # 构建参数
    ports:
      - "8080:80"

注意事项

1. 构建上下文(context

  • context 指定了 Dockerfile 所在的目录路径。构建时,Docker 会将该目录下的所有内容作为构建上下文上传到 Docker 守护进程。
  • 如果 context 路径包含大量文件,可能会导致构建变慢。建议通过 .dockerignore 文件排除无关文件。

2. 构建参数(args

  • docker-compose.yml 中定义的 args 会通过 --build-arg 传递给 docker build

3. 缓存机制

  • 默认情况下,Docker 会使用缓存来加速构建。如果需要强制重新构建,使用 --no-cache

4. 并行构建

  • 使用 --parallel 可以显著加快多服务项目的构建速度,但需要确保服务之间没有依赖关系冲突。

总结

  • docker compose build 是管理多服务镜像构建的核心工具。
  • 通过合理使用参数(如 --no-cache--pull--build-arg),可以灵活控制构建过程。
  • 结合 docker-compose.yml 中的 build 配置,可以实现高效的镜像定制与部署。
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐