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

时间:2018-10-01 09:01:13

标签: docker docker-compose

我有一个 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-3

From the doc

  

早期的Compose文件格式最多支持Compose文件extends中的version 2.1关键字(请参见v1中的扩展名和v2中的扩展名),但是Compose {不支持 {1}}



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

3 个答案:

答案 0 :(得分:1)

删除extends后,Extending services不支持

version 3

关于解决方法,您可以使用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,所以请考虑使用它。

例如

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并进行健康检查(避免{{1} }脚本。


相关:

答案 1 :(得分:1)

更新:

对于docker-compose 1.27,版本3再次支持extendshttps://github.com/docker/compose/pull/7588

答案 2 :(得分:0)

docs.docker.com社区中的文档非常清楚地说明了从2.x到3.x进行了哪些更改以及需要进行哪些升级。我要求您使用这些链接来升级docker-compose文件。我正在共享您的信息here的链接,并搜索“版本2.x到3.x”,并且该文档的更多内容还讨论了关键字extend需要做什么;在链接中搜索“扩展服务”。