15.docker-compose之多个服务编排启动


下面是3个容器编排一起启动的docker-compose.yml文件,注意看里面的depends_on属性,它能让容器先后启动

version: "3"
services:
  mysql:
    image: mariadb:10.4.15
    container_name: compass-mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=compass#123456
    privileged: true
    restart: always
    ports:
      - "6603:3306"
    volumes:
      - mysqlconfig:/etc/mysql/conf.d
      - mysqllog:/logs
      - mysqldata:/var/lib/mysql
    depends_on: - rabbit-mq - redis

  rabbit-mq:
    image: registry.kpmg.com/rabbitmq:3.8.3-management
    container_name: compass-rabbitmq
    environment:
      - RABBITMQ_DEFAULT_USER=compass
      - RABBITMQ_DEFAULT_PASS=compass123456
    privileged: true
    restart: always
    ports:
      - "16673:15672"
      - "6673:5672"

  redis:
    image: harbor.cn.kworld.kpmg.com/library/redis:6.0.9
    container_name: my-redis
    command: redis-server --appendonly yes --requirepass 123456
    restart: always
    ports:
      - "26379:6379"
    volumes:
      - redisdata:/data

volumes:
  mysqlconfig:
    external:
      false
  mysqllog:
  mysqldata:
  redisdata:

 

运行效果图如下:

 

 我们可以看到,mysql最后启动起来。

 

下面贴上每个命令对应的中文含义:

version: "3"   #docker-compose的版本,会根据不同的docker版本来写,这里3就可以了
services:   #docker-compose中用服务来描述容器,这里是服务的总入口
  mysql:  #服务名,和容器名不是一个概念
    image: mariadb:10.4.15 #当前容器所需要的对应镜像,写镜像id也可以
    container_name: compass-mariadb #容器名,和docker的容器名是一样的
    env_file: #以文件形式来配置变量
      - mysqlconfig.env #当前上下文中的文件,里面内容是MYSQL_ROOT_PASSWORD=compass#123456 用=来做key value分割
    privileged: true #权限相关
    restart: always  #自动重启
    ports: #对应端口
      - "6603:3306"
    volumes:
      - mysqlconfig:/etc/mysql/conf.d #默认名数据卷
      - mysqllog:/logs #默认名数据卷
      - mysqldata:/var/lib/mysql #默认名数据卷
    depends_on:
      - rabbit-mq
      - redis

  rabbit-mq:  #服务名,和容器名不是一个概念
    image: registry.kpmg.com/rabbitmq:3.8.3-management #当前容器所需要的对应镜像,写镜像id也可以
    container_name: compass-rabbitmq #容器名,和docker的容器名是一样的
    environment: #环境变量
      - RABBITMQ_DEFAULT_USER=compass
      - RABBITMQ_DEFAULT_PASS=compass123456
    privileged: true #权限相关
    restart: always #自动重启
    ports: #对应端口
      - "16673:15672"
      - "6673:5672"

  redis:  #服务名,和容器名不是一个概念
    image: harbor.cn.kworld.kpmg.com/library/redis:6.0.9 #当前容器所需要的对应镜像,写镜像id也可以
    container_name: my-redis #容器名,和docker的容器名是一样的
    command: redis-server --appendonly yes --requirepass 123456 #启动容器额外的命令
    restart: always #自动重启
    ports: #对应端口
      - "26379:6379"
    volumes: #默认名数据卷
      - redisdata:/data

volumes: #使用默认名数据卷需要来这边定义
  mysqlconfig:
    external: #是否外部的数据卷,默认否,如果写true代表可以用自己提前创建好的数据卷名
      false
  mysqllog:
  mysqldata:
  redisdata:

  

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM