docker · 2024-10-31 0

docker-compose-build 使用

docker-compose-build.yml

# 1.为所有服务构建镜像 docker compose -f docker-compose-build.yml build
# 2.构建特定服务的镜像 docker compose -f docker-compose-build.yml build webapp4
# 3.不使用缓存构建镜像 docker compose -f docker-compose-build.yml build --no-cache
# 4.从最新基础镜像构建 docker compose build --pull
# 5.传递构建变量 docker compose build --build-arg NODE_ENV=production

services:
  # 1.build 参数
  # 如果不配置 images,则 images 默认为“项目名+service key“,即 spring-boot-docker-demo-webapp1latest
  # 指定包含构建上下文的路径, 或作为一个对象,该对象具有 context 和指定的 dockerfile 文件以及 args 参数值
  webapp1:
    build: ./
    image: mywebapp1:1.0

  # 2.context 参数
  # context 选项可以是 Dockerfile 的文件路径,也可以是到链接到 git 仓库的 url
  webapp2:
    build:
      context: ./

  # 3.dockerfile 参数
  webapp3:
    build:
      context: ./
      dockerfile: ./Dockerfile

  # 4.args 参数
  # 注意:YAML布尔值(true,false,yes,no,on,off)必须用引号括起来,这样分析器会将它们解释为字符串
  # 可以使用字典或数组
  # 等同于 docker container build --build-arg 的作用
  webapp4-1:
    build:
      context: ./
      args:
        id1: 123
        name1: zhangsan

  webapp4-2:
    build:
      context: ./
      args:
        - id1=123
        - name1=zhangsan

  # 5.cache_from 参数
  # 指定缓存的镜像列表
  # v3.2中新增的参数
  # 等同于 docker container build --cache_from 的作用
  webapp5:
    build:
      context: ./
      cache_from:
        - nginx:1.25-alpine

  # 6.labels 参数
  # 使用 Docker 标签 将元数据添加到生成的镜像中
  # 可以使用字典或数组
  # docker image inspect spring-boot-docker-demo-webapp6-1:latest 可以看到 labels
  # v3.3中新增的参数, 设置镜像的元数据 (等同于 docker container build --labels 的作用)
  webapp6-1:
    build:
      context: ./
      labels:
        lab1: value1
        lab2: value2

  webapp6-2:
    build:
      context: ./
      labels:
        - lab1=value1
        - lab2=value2

  # 7.shm_size 参数
  # 设置容器 /dev/shm 分区的大小,值为表示字节的整数值或表示字符的字符串
  webapp7:
    build:
      context: ./
      shm_size: '2gb'

  # 8.target 参数
  # 根据对应的 Dockerfile 构建指定 Stage
  webapp8:
    build:
      context: ./
      target: prod

  # 2.9.cap_add,cap_drop 参数
  # 添加或删除容器功能
  webapp9:
    build: ./
    cap_add:
      - ALL
    cap_drop:
      - NET_ADMIN
      - SYS_ADMIN

  # 10.cgroup_parent 参数
  # 可以为容器选择一个可选的父 cgroup_parent
  webapp10:
    build: ./
    cgroup_parent: m-executor-abcd