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