end*_*and 6 docker docker-compose
我有一些 docker-compose 文件,例如:
#docker-compose.yml
version: '2'
services:
my_other_service:
image: alpine
command: ping -c3 google.com
my_base_service_reference:
extends:
file: base-docker-compose.yml
service: base_service
#base-docker-compose.yml
version: '2'
services:
base_service:
image: alpine
command: ping -c5 google.com
Run Code Online (Sandbox Code Playgroud)
我可以运行这两个服务,docker-compose up因为我引用了第二个文件。但我真正想做的是让我的单个 docker-compose 文件像这样工作:
#docker-compose.yml
version: '2'
services:
my_other_service:
image: alpine
command: ping -c3 google.com
#base-docker-compose.yml
version: '2'
services:
base_service:
image: alpine
command: ping -c5 google.com
$ docker-compose -f base-docker-compose.yml up &
$ docker-compose -f docker-compose.yml up &
Run Code Online (Sandbox Code Playgroud)
有没有办法以这种方式构建我的 docker-compose.yml 以获得类似的功能?
实际上,我有不止两个简单的示例,最好避免启动每个单独的服务,并且它需要单独的依赖项,而是类似:
#docker-compose.yml
version: '2'
services:
my_other_service:
image: alpine
command: ping -c3 google.com
other_docker_compose_files:
- base-docker-compose.yml
- other-docker-compose.yml
- another-docker-compose.yml
Run Code Online (Sandbox Code Playgroud)
我可以在其中运行docker-compose -f docker-compose.yml up并执行相当于单独启动每个文件的操作。
即使过了 5 年,docker-compose 也没有能力做这样的事情或docker-compose up -f docker-compose*.yml.
我建议所有人使用yq,并使用它将所有 yaml 文件合并为一个。
我使用这样的脚本,第一行只是为了确保没有剩余并且可以删除。
运行_all.sh
rm docker-compose-combined.yml
yq ea '. as $item ireduce ({}; . * $item )' docker-compose*.yml > docker-compose-combined.yml
docker-compose -f docker-compose-combined.yml up
rm docker-compose-combined.yml
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
580 次 |
| 最近记录: |