如何使用 smillar 服务名称扩展 docker compose 文件?

How to extend docker compose files with smillar service names?

提问人:Samith Perera 提问时间:11/17/2023 最后编辑:Samith Perera 更新时间:11/20/2023 访问量:23

问:

在我的方案中,我的目标是通过 Docker Compose 在各种环境中部署 Docker 容器,每个环境都有特定的用户要求。因此,我们选择使用多个 Docker Compose 文件。为了加强管理,我们试图创建一个集中的 compose 文件,并将其扩展到其他 Docker Compose 文件。鉴于我们在两个文件中使用相同的 Docker Compose 服务名称,完成此操作是否可行?

有没有人有如何做到这一点的例子?

docker-compose

评论

1赞 Robby Cornelissen 11/17/2023
如果 Google 中的第一个结果提供了相关文档,那么真的值得写一个问题吗?docs.docker.com/compose/multiple-compose-files/extends
0赞 Samith Perera 11/20/2023
@RobbyCornelissen我在 Docker Compose 文档中找不到一个明确的例子。即使是现有的示例也演示了具有不同服务名称的服务。我也有类似的疑问,不得不自己测试一下才能澄清。我相信在这里分享这一点对任何寻求参考的人都是有益的。

答:

0赞 Samith Perera 11/17/2023 #1

找到了实现这一目标的方法,

这是我们主要的 docker-compose 文件,

version: '3.9'

services:

  backend:
    image: backend:latest
    container_name: backend
    ports:
      - "8080:8080"
    env_file:
    - ./env_files/common.env
    - ./env_files/backend.env
  frontend:
    image: frontend:latest
    container_name: frontend
    ports:
      - "8081:80"
    env_file:
    - ./env_files/common.env
    - ./env_files/frontend.env

  apigateway:
    image: apigateway:latest
    container_name: apigateway
    ports:
      - "80:80"
      - "8888:8888"
    env_file:
      - ./env_files/common.env
      - ./env_files/apigateway.env

然后我们通过扩展主 docker-compose 创建了一个单独的文件,

version: '3.9'

services:

  backend:
    extends:
      file: docker-compose.yaml
      service: backend
  frontend:
    extends:
      file: docker-compose.yaml
      service: frontend
  apigateway:
    extends:
      file: docker-compose.yaml
      service: apigateway
    environment:
      - DOCKER_BACKEND_URL=example.com
    extra_hosts:
      - "host.docker.internal:host-gateway"