我有一个 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文件?
答案 0 :(得分:1)
extends
后,Extending services不支持
关于解决方法,您可以使用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
通常,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功能,包括extends
,depends_on
,扩展字段,甚至还有depends_on
并进行健康检查(避免{{1} }脚本。
相关:
答案 1 :(得分:1)
对于docker-compose 1.27,版本3再次支持extends
:
https://github.com/docker/compose/pull/7588
答案 2 :(得分:0)