启动我们的应用程序的最佳方式是使用我们提供的docker compose.该泊坞窗,撰写启动所有与正确配置的服务.
现在我们想提供一个docker-compose,其中应用程序使用不同的后端运行.在这个组成中,8个10个服务是相同的,2个是不同的.
没有代码重复如何实现这一目标? 我看到服务可以从另一个docker-compose文件扩展服务,但是这仍然需要列出两个文件中的所有10个服务.
Jos*_*uis 20
使用docker-compose 1.6,这应该是可能的.
docker-compose.yml
使用您的共同服务创建:
service01:
image: image01
links:
- service02
service02:
image: image02
Run Code Online (Sandbox Code Playgroud)
第二个文件,docker-compose.prod.yml
带有您独特的服务:
service03:
image: image03
links:
- service02
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用以下命令启动服务01,02和03:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅官方文档:https: //docs.docker.com/compose/extends/#multiple-compose-files
Jus*_*ner 16
实现此目的的最简单方法是创建第二个撰写文件.在第二个文件中,您可以使用extend
Docker Compose 的功能,它允许您从另一个文件"继承"服务:https://docs.docker.com/compose/extends/
假设您的原始文件是docker-compose.yaml
,您可以创建一个swap-backend-compose.yaml
:
service-one:
extends:
file: docker-compose.yaml
service: service-one
service-two:
extends:
file: docker-compose.yaml
service: service-two
environment:
- BACKEND=some_other_value
Run Code Online (Sandbox Code Playgroud)
...等等.
Zac*_*nta 13
正如评论中所指出的,版本 3 弃用了extends
关键字,所以这里是一个没有它的最小示例:
# BASE - docker-compose.base.yml
version: "3"
services:
api:
build: .
# DEV - docker-compose.dev.yml
services:
api:
command: npm run dev
# PROD - docker-compose.prod.yml
services:
api:
command: npm run prod
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
.dev.yml
, ) 可以从基础文件 ( ).prod.yml
继承、添加和替换配置选项.base.yml
build
2) 添加自己的command
选项docker-compose.yml
;我在这里添加.base
只是为了强调继承方面,并且因为我喜欢更明确的名称;请记住docker-compose默认查找docker-compose.yml
和docker-compose.override.yml
。 归档时间: |
|
查看次数: |
19839 次 |
最近记录: |