码头工人如何压妹儿?

2020-07-23  本文已影响0人  杨健kimyeung

概要

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

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

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/

子属性

说明

如果是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
上一篇 下一篇

猜你喜欢

热点阅读