天天看点

docker-compose 一些有用的新功能

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      

说明

参考资料

继续阅读