美文网首页
码头工人如何压妹儿?

码头工人如何压妹儿?

作者: 杨健kimyeung | 来源:发表于2020-07-23 19:30 被阅读0次

    概要

    容器编排,他是一个容器快速编排的技术

    docker-compose.yml

    • 项目 包含多个服务
    • 在每个服务里可以定义容器运行的参数 配置文件等等
    • 一个容器可以设置开启多个实例

    安装

    使用二进制的文件安装

    curl -L https://github.com/docker/compose/releases/download/1.23.0-rc2/run.sh > /usr/local/bin/docker-compose
    # 授权可执行文件
    chmod +x /usr/local/bin/docker-compose
    

    使用pip安装

    pip install  docker-compose
    

    检测安装是否成功

    docker-compose  version
    

    yml语法 (压妹儿语法)

    YAML 一个中非标记语言,相比传统的配置文件更加简洁,可读行更强

    • xml

    • properties

    • json

    • yml

    基础语法

    key:[空格]value

    • 可以是基本类型
    • 对象类型 map
    • 数组
    username: 小王
    age: 18
    

    docker-compose 基础指令

    version

    指定docker-compose的版本

    栗子

    version: "3"
    # version: "3.7"
    

    services

    声明一组服务

    image

    指定基础镜像

    栗子

    # 声明docker-compose的版本
    version: 3
    # 声明一组服务
    services:
    # 服务的名称
      nginx:
        # 从远程仓库下载现成的镜像
        image: nginx
    
    

    build

    从dockerfile中构建镜像

    栗子

    # 声明docker-compose的版本
    version: 3
    # 声明一组服务
    services:
      app:
        # 通过dockerfile构建镜像
        build: ./docker/
    

    子属性

    • context 指定dockerfile的路径
    • dockerfile 指定的dockerfile的名字

    说明

    如果是dockerfile文件命令是dockerfile可以省略不写

    ports

    映射一组端口 值的类型是一个数组

    栗子

    # 声明docker-compose的版本
    version: 3
    # 声明一组服务
    services:
        build: ./docker/
        ports:
          # 映射一组端口端口
          - "8080:8080"
          - "9000:9000"
    

    volumes

    将容器中目录映射到宿主机的目录(保存数据)

    • 可以映射文件
    • 映射目录(防止目录的里原有的文件被覆盖的现象)
    # 声明docker-compose的版本
    version: 3
    # 声明一组服务
    services:
      mysql:
        # mysql的数据 保存在宿主机
        image: mysql
        volumes:
          - ./data/:/var/lib/mysql
          - ./logs/:/var/log/mysql
    

    COMMAND

    设置容器运行的参数

    语法格式

        command:
          #  防止低版本的连接客服报错的问题
          --default-authentication-plugin=mysql_native_password
          # 设置数据库的编码
          --character-set-server=utf8mb4
          # 设置数据库默认的排序方式
          --collation-server=utf8mb4_general_ci
          # 解决低版本不允许时间字段 not null
          --explicit_defaults_for_timestamp=true
          # Linux  表名区分大小写   1 表示不区分大小写
          --lower_case_table_names=1
    

    environment

    设置某些特定的容器的环境变量

    栗子

        environment:
          # 第一个连接数据URL的时候指定时区
          # 第二个 创建数据库的指定时区
          TZ: Asia/Shanghai
          #  注意  在开发中不要使用root用户去连接数据库 安全考虑
          MYSQL_ROOT_PASSWORD: root
          MYSQL_USER: hello
          MYSQL_PASSWORD: world
    

    运行docker-compose文件

    docker-compose up -d
    

    完整的代码

    # 声明docker-compose的版本
    version: "3"
    # 声明一组服务
    services:
      #
      nginx:
        # 从远程仓库下载现成的镜像
        image: nginx
      # 容器 自定义镜像
      app:
        #  通过dockerfile构建镜像
        build: ./app/
        # 等价于
        #  context: ./app/
        #  dockerfile: Dockerfile
        ports:
          # run -p  映射端口
          - "8080:8080"
          - "9000:9000"
      mysql:
        # mysql 数据 保存在宿主机
        #  数据卷  -v
        image: mysql
        volumes:
          - ./data/:/var/lib/mysql
          - ./logs/:/var/log/mysql
        command:
          #  防止低版本的连接客服报错的问题
          --default-authentication-plugin=mysql_native_password
          # 设置数据库的编码
          --character-set-server=utf8mb4
          # 设置数据库默认的排序方式
          --collation-server=utf8mb4_general_ci
          # 解决低版本不允许时间字段 not null
          --explicit_defaults_for_timestamp=true
          # Linux  表名区分大小写   1 表示不区分大小写
          --lower_case_table_names=1
        environment:
          # 第一个连接数据URL的时候指定时区
          # 第二个 创建数据库的指定时区
          TZ: Asia/Shanghai
          #  注意  在开发中不要使用root用户去连接数据库 安全考虑
          MYSQL_ROOT_PASSWORD: root
          MYSQL_USER: hello
          MYSQL_PASSWORD: world
    

    相关文章

      网友评论

          本文标题:码头工人如何压妹儿?

          本文链接:https://www.haomeiwen.com/subject/brtklktx.html