Docker-compose:替换 extends 关键字

Rtm*_*tmY 9 docker docker-compose

来自泊坞窗文档

\n\n
\n

Docker Compose\xe2\x80\x99s extends关键字允许在不同文件甚至完全不同的项目之间共享通用配置。如果您有多个重用一组通用配置选项的服务,则扩展服务非常有用。使用扩展,您可以在一个地方定义一组通用的服务选项,并从任何地方引用它。

\n
\n\n

由于某种原因,该功能 在版本 3 中被删除

\n\n

也发现了这个帖子,但它已经闲置了 2 年了。

\n\n

我正在尝试在新版本中找到此功能的替代品。

\n\n

想听听是否有人找到了替代品extends

\n\n

谢谢。

\n

bug*_*bug 12

有两种方法可以实现您的需求,您可以决定使用其中一种或同时使用两种方法,因为它们的工作方式略有不同:

多个撰写文件

您可以在运行 docker compose 命令时指定多个 compose 文件,例如,您可以使用以下命令设置项目:

docker-compose -f config1.yml -f config2.yml up
Run Code Online (Sandbox Code Playgroud)

您还可以使用环境变量来指定您的文件:

COMPOSE_FILE=config1.yml:config2.yml docker-compose up
Run Code Online (Sandbox Code Playgroud)

发生的情况是 docker compose 创建一个配置,合并您在每个配置中定义的内容。
这里的文档展示了如何合并多个撰写文件

config您还可以运行命令生成最终配置文件。

YAML 锚点

由于 docker compose 文件基本上是 YAML 文件,因此您可以利用 YAML 锚点来定义属性块并在配置的多个部分中重用它们。

例如:

version: '3'

common: &common
  image: "myrepo/myimage"
  restart: "unless-stopped"
  volumes:
    - "volume:/mnt/myvolume"

services:
  service1:
    <<: *common
    ports:
      - "5000:5000"

  service2:
    <<: *common
    environment:
      - MYENV: value
Run Code Online (Sandbox Code Playgroud)