version: "3.2" # 指定 compose 文件的版本
services: # 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称
srv-auth:
image: 192.168.179.56:5000/ccdc/srv-auth:develop-R20211220 # 指定 docker 镜像, 可以是远程仓库镜像、本地镜像
ports:
- "8902:8902" # 建立宿主机和容器之间的端口映射关系
labels: # 使用 Docker 标签将元数据添加到容器, 与 Dockerfile 中的 LABELS 类似
container_name: "srv-auth"
deploy:
mode:
#global # 每个集群节点都只有一个容器
replicated # 用户可以指定集群中容器的数量(默认)
replicas: 1 # deploy 的 mode 为 replicated 时, 指定容器副本的数量
resources: # 资源限制
limits: # 设置容器的资源限制
memory: 2g # 设置该容器最多只能使用 2G 的内存空间
cpus: '0.25' # 设置该容器最多只能使用 25% 的 CPU
reservations: # 设置为容器预留的系统资源(随时可用)
cpus: '0.1' # 为该容器保留 10% 的 CPU
memory: 1g # 为该容器保留 1G 的内存空间
placement:
constraints: #对可用节点作出限制
[node.role == manager] #在manager节点运行
restart_policy: # 定义容器重启策略, 用于代替 restart 参数
condition: # 定义容器重启策略(接受三个参数)
#none # 不尝试重启
#on-failure # 只有当容器内部应用程序出现问题才会重启
any # 无论如何都会尝试重启(默认)
delay: # 尝试重启的间隔时间(默认为 0s)
max_attempts: # 尝试重启次数(默认一直尝试重启)
window: # 检查重启是否成功之前的等待时间(即如果容器启动了, 隔多少秒之后去检测容器是否正常, 默认 0s)
environment: # 设置环境变量, environment 的值可以覆盖 env_file 的值 (等同于 docker run --env 的作用)
- SPRING_PROFILES_ACTIVE=docker
- DATABASE_NETVIP_ADDRESS=192.168.179.57
- DATABASE_NETVIP_PASSWORD=******
entrypoint: # 覆盖容器的默认 entrypoint 指令 (等同于 docker run --entrypoint 的作用)
[
"java",
"-Djava.security.egd=file:/dev/./urandom -Xms1g -Xmx2g -XX:+UseG1GC",
"-jar",
"/app.jar",
]
volumes: # 定义容器和宿主机的卷映射关系, 其和 networks 一样可以位于 services 键的二级键和 compose 顶级键, 如果需要跨服务间使用则在顶级键定义, 在 services 中引用
- /var/lib/mysql # 映射容器内的 /var/lib/mysql 到宿主机的一个随机目录中
- /opt/data:/var/lib/mysql # 映射容器内的 /var/lib/mysql 到宿主机的 /opt/data
- ./cache:/tmp/cache # 映射容器内的 /var/lib/mysql 到宿主机 compose 文件所在的位置
- ~/configs:/etc/configs/:ro # 映射容器宿主机的目录到容器中去, 权限只读
- datavolume:/var/lib/mysql # datavolume 为 volumes 顶级键定义的目录, 在此处直接调用
networks:
mynet: # 调用下面 networks 定义的 mynet 网络
ipv4_address: 172.16.238.10 #指定ip
networks: # 定义 networks 信息
mynet:
driver: overlay
ipam: # 自定义 IPAM 配置. 这是一个具有多个属性的对象, 每个属性都是可选的
driver: default # IPAM 驱动程序, bridge 或者 default
config: # 配置项
subnet: 172.16.238.0/24 # CIDR格式的子网,表示该网络的网段
name : netvip_cluster_net # v3.5 以上版本, 为此网络设置名称