docker-compose锚点使用

该文介绍了Docker-Compose文件中使用YAML锚点和继承机制来简化服务配置的原理。通过创建锚点如`&automatic`和引用`<<:*base_service`,实现配置复用。配置包括服务的构建路径、镜像、环境变量设置以及针对特定配置文件(如`profiles`)生效的规则。此外,还涉及到容器的端口映射、数据卷、停止信号、资源限制(如NVIDIAGPU)以及不同服务的定制化配置。
摘要由CSDN通过智能技术生成

一下是一份docker-compose文件,用于学习锚点
这是一个 YAML 格式的配置文件片段,其中 &automatic 表示创建一个名为 automatic 的锚点,<<: *base_service 表示该配置继承了名为 base_service 的基础配置。接下来定义了一些自定义配置项,如 profilesbuildimageenvironment 等。

具体解释如下:

  • &automatic:创建锚点,名称为 automatic
  • <<: *base_service:表示继承基础配置,可以认为是引用了一个名为 base_service 的配置模板,并将其中所有属性都复制到当前配置中。
  • profiles: ["auto"]:设置 profiles["auto"],表示只针对 auto 配置文件生效。
  • build: ./services/AUTOMATIC1111:指定 Docker 构建上下文路径,在该路径下 Docker 将构建服务镜像。
  • image: sd-auto:58:指定 Docker 镜像名称和标签。
  • environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api:设置环境变量 CLI_ARGS"--allow-code --medvram --xformers --enable-insecure-extension-access --api"

这份配置文件片段通常用于容器编排、持续集成与部署等场景,旨在简化应用部署流程。

version: '3.9'

x-base_service: &base_service
    ports:
      - "7860:7860"
    volumes:
      - &v1 ./data:/data
      - &v2 ./output:/output
    stop_signal: SIGINT
    deploy:
      resources:
        reservations:
          devices:
              - driver: nvidia
                device_ids: ['0']
                capabilities: [compute, utility]

name: webui-docker

services:
  download:
    build: ./services/download/
    profiles: ["download"]
    volumes:
      - *v1

  auto: &automatic
    <<: *base_service
    profiles: ["auto"]
    build: ./services/AUTOMATIC1111
    image: sd-auto:58
    environment:
      - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api

  auto-cpu:
    <<: *automatic
    profiles: ["auto-cpu"]
    deploy: {}
    environment:
      - CLI_ARGS=--no-half --precision full --allow-code --enable-insecure-extension-access --api

  invoke: &invoke
    <<: *base_service
    profiles: ["invoke"]
    build: ./services/invoke/
    image: sd-invoke:29
    environment:
      - PRELOAD=true
      - CLI_ARGS=--xformers

  # invoke-cpu:
  #   <<: *invoke
  #   profiles: ["invoke-cpu"]
  #   environment:
  #     - PRELOAD=true
  #     - CLI_ARGS=--always_use_cpu

  comfy: &comfy
    <<: *base_service
    profiles: ["comfy"]
    build: ./services/comfy/
    image: sd-comfy:2
    tty: true
    environment:
      - CLI_ARGS=


  comfy-cpu:
    <<: *comfy
    profiles: ["comfy-cpu"]
    deploy: {}
    environment:
      - CLI_ARGS=--cpu

以下是一个 YAML 锚点经典案例,用于定义多个相似但不完全相同的结构体:

# 定义锚点 base
base: &base
  name: ""
  age: 0
  gender: ""

# 引用锚点 base 并创建结构体 A
A:
  << : *base
  name: "John"
  age: 25
  gender: "Male"

# 引用锚点 base 并创建结构体 B
B:
  << : *base
  name: "Jane"
  age: 30
  gender: "Female"

在上面的例子中,使用 &base 创建了一个名为 base 的锚点,并定义了三个属性:name、age 和 gender。然后通过 <<: *base 引用该锚点以创建两个新的结构体 A 和 B。

由于 A 和 B 继承了 base 锚点的所有属性和值,因此可以说它们是相似但不完全相同的结构体。这种方式可以大大简化配置文件编写和管理工作,并提高代码复用性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少陽君

谢谢老板的拿铁

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值