如何在Docker Compose V3中扩展服务?

问题描述 投票:2回答:2

我有一个docker-compose.yml看起来像

version: '2'
services:
  redis:
    image: redis

  mysqldb:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=passme
      - MYSQL_DATABASE=mydb
      - MYSQL_USER=root

  base:
    build: .
    volumes:
      - .:/proj
    environment:
      - ENV_1=Value_1
      - ENV_2=Value_2
      - ENV_3=Value_3

  worker:
    extends:
      service: base
    command: celery -A proj worker --loglevel=debug
    links:
      - redis
      - mysqldb
    depends_on:
      - mysqldb

  web:
    extends:
      service: base
    links:
      - mysqldb
      - redis
    depends_on:
      - mysqldb
    ports:
      - "8000:8000"
    command: python manage.py runserver 0.0.0.0:8000

现在,我想将其升级到version-3From the doc

extends关键字在早期Compose文件格式中受支持,最高为Compose file version 2.1(请参阅v1中的扩展并在v2中扩展),但在Compose中不支持version 3.x

所以,这是我的问题,如何在不丢失当前功能的情况下使用版本-3 docker-compose文件?

docker docker-compose
2个回答
1
投票

在移除Extending services后,version 3不支持extends

至于变通方法,你可以使用docker-compose addons,例如

include:
    - http://example.com/compositions/servicea.yaml
    - http://example.com/compositions/serviceb.yaml

namespace: core

web:
    image: example/service_a:latest
    links: ['servicea.web', 'serviceb.api']

另一种方法是从命令行包含多个作曲家文件(具有多个-f选项)。见:Add support for multiple composefile when deploying。例如。

docker-compose -f submodules/A_SUB_PROJECT/docker-compose.yml -f submodules/B_SUB_PROJECT/docker-compose.yml config | docker-compose -f - up

资料来源:When using multiple docker-compose.yml files from different directories, local paths are not followed correctly


一般来说,version 3 is more ideal for Swarm/Kube stacks,所以考虑使用它。

EG

docker stack deploy -c docker-compose.yml mystack1
docker stack deploy -c another/docker-compose.yml mystack2

如果您没有使用Swarm或Docker Enterprise Kubernetes堆栈,则没有理由使用v3。坚持v2.4,你得到所有docker-compose cli功能,包括extendsdepends_on,扩展字段,甚至depends_on与healthchecks(以避免wait-for-it脚本)。


有关:


-1
投票

docs.docker.com社区中的文档非常清楚2.x到3.x的变化以及升级它需要做些什么。我请求您使用这些链接升级docker-compose文件。我正在分享您的信息here的链接并搜索“Version 2.x to 3.x”,更多文档中还讨论了关键字extend需要做什么;在链接中搜索“扩展服务”。

© www.soinside.com 2019 - 2024. All rights reserved.