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

JPG*_*JPG 7 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
Run Code Online (Sandbox Code Playgroud)


现在,我想将其升级version-3

从文档

extends关键字在早期撰写的文件格式,最高可达撰写文件支持version 2.1(见V1延伸,在延伸V2),但在撰写不支持version 3.x



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

ken*_*orb 5

删除.​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']
Run Code Online (Sandbox Code Playgroud)

另一种方法是从命令行包含多个作曲家文件(具有多个-f选项)。请参阅:部署时添加对多个 composefile 的支持。例如

docker-compose -f submodules/A_SUB_PROJECT/docker-compose.yml -f submodules/B_SUB_PROJECT/docker-compose.yml config | docker-compose -f - up
Run Code Online (Sandbox Code Playgroud)

来源:当使用来自不同目录的多个 docker-compose.yml 文件时,本地路径未正确遵循


一般来说,版本 3 更适合 Swarm/Kube 堆栈,因此可以考虑使用它。

例如

docker stack deploy -c docker-compose.yml mystack1
docker stack deploy -c another/docker-compose.yml mystack2
Run Code Online (Sandbox Code Playgroud)

如果您不使用 Swarm 或 Docker Enterprise Kubernetes 堆栈,则没有理由使用 v3。坚持使用 v2.4,您将获得所有docker-composecli 功能,包括extendsdepends_on、扩展字段,甚至还有depends_on运行状况检查(以避免wait-for-it脚本)。


有关的:


Chu*_*ung 5

更新:

使用 docker-compose 1.27,extends版本 3 再次支持:https : //github.com/docker/compose/pull/7588