docker-compose 可以友善我們進行多容器環境的管理,通過也提供了一些比較有意思的功能,比如extends,以及profiles
extends 的場景
比如我們需要使用一些模版進行服務的擴充,就可以使用次能力,模版是獨立的docker-compose 檔案定義格式,我們可以使用對于的某一個服務的定義
然後可以改寫
profiles 的場景
比如我們需要測試一個多環境,但是不同環境起不通的服務,類似spring boot 的profile 不同profile 激活不同的服務以及bean,或者配置
參考使用
內建以上幾個功能的測試
- docker-compose.yaml
version: '3'
services:
app:
extends:
file: myapp.yaml
service: app-web
networks:
- demoapp
- appdemo
- mydemoapp
redis:
image: redis
profiles: ["redisdb"] # profile 使用
networks:
demoapp:
appdemo:
mydemoapp:
myapp.yaml 模版定義
version: '3'
services:
app-web:
image: openresty/openresty:1.21.4.1-3-alpine-fat
ports:
- 80:80
- 80:80
-
啟動
預設啟動docker-compose up -d 會看到不包含redis 容器,使用 docker-compose --profile redisdb up -d 可以看到redis 容器
profle 的啟動方式還有一種是基于環境變量。
指令如下
docker compose --profile frontend --profile debug up -d
COMPOSE_PROFILES=frontend,debug docker compose up -d