docker-compose锚点使用

一下是一份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 锚点的所有属性和值,因此可以说它们是相似但不完全相同的结构体。这种方式可以大大简化配置文件编写和管理工作,并提高代码复用性和可维护性。

你可能感兴趣的:(docker,docker,数学建模,容器)