zoukankan      html  css  js  c++  java
  • 微服务----docker-compose.yml属性详解

    详细解释:

    version : '3'        #Compose文件版本支持特定的Docker版本
    services:            #本工程的服务配置列表
    
      swapping:            #spring boot的服务名,服务名自定义
        container_name: swapping-compose    
                        #本spring boot服务之后启动的容器实例的名字,如果指定,按照这个命名容器,如果未指定,容器命名规则是
                        #【[compose文件所在目录]_[服务名]_1】,例如【swappingdockercompose_swapping_1】
                #如果多启动,也就是docker-compose scale swapping=3 mysql=2的话,就不需要指定容器名称,否则会报错 容器名重复存在的问题
        build:            #基于Dockerfile文件构建镜像时使用的属性
          context: .    #代表当前目录,也可以指定绝对路径[/path/test/Dockerfile]或相对路径[../test/Dockerfile],尽量放在当前目录,便于管理
          dockerfile: Dockerfile-swapping    #指定Dockerfile文件名。如果context指定了文件名,这里就不用本属性了
        ports:                        #影射端口属性
          - "9666:9666"                #建议使用字符串格式,指定宿主机端口映射到本容器的端口
        volumes:                    #挂载属性
          - .:/vol/development        
                                      #挂载路径在compose配置文件中只能指定容器内的目录,而docker run命令可以指定[宿主机目录:容器内目录]的挂载方式。可以使用:ro对容器内目录设置只读,来保护宿主机的文件系统
        depends_on:                    #本服务启动,需要依赖哪些别的服务  例如这里;mysql服务就会先于swapping服务启动。至于配置多个的话,depends_on内的多个依赖的启动先后顺序未测试过
          - mysql
        links:                        #与depends_on相对应,上面控制启动顺序,这个控制容器连接问题。
          - "mysql:mysql"            #值可以是- mysql[- 服务名],也可以是- "mysql:mysql"[- "服务名:别名"]
        restart: always                #是否随docker服务启动重启
        networks:                    #加入指定网络
          - my-network                #自定义的网络名
        environment:                #environment 和 Dockerfile 中的 ENV 指令一样会把变量一直保存在镜像、容器中,类似 docker run -e 的效果。设置容器的环境变量
          - TZ=Asia/Shanghai        #这里设置容器的时区为亚洲上海,也就解决了容器通过compose编排启动的 时区问题!!!!解决了容器的时区问题!!!
    
      mysql:                            #服务名叫mysql,自定义
        container_name: mysql-compose    #容器名
        image: mysql:5.7                #虽然没有使用build,但使用了image,指定基于mysql:5.7镜像为基础镜像来构建镜像。【使用build基于Dockerfile文件构建,Dockerfile文件中也有FROM基于基础镜像】
        ports:
          - "33061:3306"
        command: [                        #使用 command 可以覆盖容器启动后默认执行的命令
                '--character-set-server=utf8mb4',            #设置数据库表的数据集
                '--collation-server=utf8mb4_unicode_ci',    #设置数据库表的数据集
                '--default-time-zone=+8:00'                    #设置mysql数据库的 时区问题!!!! 而不是设置容器的时区问题!!!!
        ]
        environment:            
          MYSQL_DATABASE: swapping                             #设置初始的数据库名
          MYSQL_ROOT_PASSWORD: 398023                        #设置root连接密码
          MYSQL_ROOT_HOST: '%' 
        restart: always
        networks:
          - my-network
    networks:                        #关于compose中的networks的详细使用https://blog.csdn.net/Kiloveyousmile/article/details/79830810
      my-network:                    #自定义的网络,会在第一次构建时候创建自定义网络,默认是bridge
    

    此表显示哪些Compose文件版本支持特定的Docker版本。参考:https://docs.docker.com/compose/compose-file/

    参考文献

      https://www.cnblogs.com/sxdcgaq8080/p/10072040.html

      https://docs.docker.com/compose/overview/   官方文档

  • 相关阅读:
    Linux文件系统
    Ant整合svnant(三)
    Linux文件系统基本结构和基本操作管理
    Ant生成javadoc(四)
    Linux系统常用命令
    Linux系统目录架构
    使用fdisk进行磁盘管理
    命令行BASH的基本操作
    python 获取项目的根路径
    游戏自动化测试思路
  • 原文地址:https://www.cnblogs.com/yanxiaoge/p/11029618.html
Copyright © 2011-2022 走看看