我有一个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
extends
关键字在早期Compose文件格式中受支持,最高为Compose fileversion 2.1
(请参阅v1中的扩展并在v2中扩展),但在Compose中不支持version 3.x
所以,这是我的问题,如何在不丢失当前功能的情况下使用版本-3 docker-compose文件?
在移除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
一般来说,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功能,包括extends
,depends_on
,扩展字段,甚至depends_on
与healthchecks(以避免wait-for-it
脚本)。
有关: