zoukankan      html  css  js  c++  java
  • 第五课:单机编排利器:Docker Compose

    1.Compose是什么

    Compose是用于定义和运行多容器的工具。通过Compose可以使用YAML文件来配置容器。然后,使用一个命令就可以从配置中创建并启动所有服务。
    官方文档:https://docs.docker.com/compose/

    使用Compose大致分三步:
    定义Dockfile,以便可以在任意环境运行。
    定义应用程序启动配置文件docker-compose.yaml。
    docker-compose启动并管理整个应用程序生命周期。

    2.linux安装compose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose  
    
    sudo chmod +x /usr/local/bin/docker-compose
    

    3.compose编排常用字段说明

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

    字段 描述 示例
    bulid
     dockerfile
     context
    构建选项
     制定Dockfile文件名
     构建镜像上下文路径
    build:
     context:./dir
     dockerfile:Dockerfile-alternate
    image 指定镜像 image:webapp:tag
    command 容器中执行命令,覆盖默认命令 command:bundle exec thin -p 3000
    command:["bundle","exec","thin","-p","3000"]
    environment 添加环境变量 environment:
     - RACK_ENV=development
     - SHOW=true
    networks 加入网络,引用顶级networks下条目 networks:
     - new
    ports 暴露端口,与-p相同,但端口不能低于60 ports:
     - "80:80"
     - "8080:8080/udp"
    extra_hosts 添加主机名映射,与--add-host相同 extra_hosts:
     - "somehost:192.168.100.100"
     - "otherhost:192.168.1.1"
    volumes 挂载宿主机路径或数据卷,如果是命名卷在顶级volumes定义卷名称 volumes:
     - /opt/data:/var/lib/mysql
     - datavolumes:/var/lib/mysql
    restart 重启策略,默认no,always|no-failure|unless-stopped restart:always
    hostname 容器主机名 hostname:FOO

    4. compose常用选项与命令

    常用选项
    -f,--file 指定yaml文件,默认docker-compose.yml
    -p,--project-name 指定项目名称,默认是当前目录

    命令 描述
    build 重新构建服务
    ps 列出容器
    up 创建和启动容器
    exec 在容器内执行命令
    scale 指定一个服务容器启动数量
    down 删除容器,网络,数据卷和镜像
    stop/start/restart 停止/启动/重启服务

    5. docker-compse.yml示例

    version: "3"
    service: 
      nginx:
        hostname: nginx
        bulid:
          context: ./nginx
          dockerfile: Dockerfile
        ports:
          - 80:80
        networks:
          - lnmp
        volumes:
          - ./nginx/php.conf:/usr/local/nginx/conf/vhost/php.conf
          - ./wwwroot:/usr/local/nginx/html
          
        php:
          hostname: php
          build:
            context: ./php
            dockerfile: Dockerfile
          networks:
            - lnmp
          volumes:
            - ./wwwroot:/usr/local/nginx/html
        
        mysql:
          hostname: mysql
          image: mysql:5.7
          ports:
            - 3006:3006
          networks:
            - lnmp
          volumes:
            - ./mysql/conf:/etc/mysql/conf.d
            - ./mysql/data:/var/lib/mysql
          command: --character-set-server=utf8
          enviroment:
            MYSQL_ROOT_PASSWORK: 123456
            MYSQL_DATABASE: test
            MYSQL_USER: user
            MYSQL_PASSWORD: user123456
            
        networks:
          lnmp: {}
          
        ```
  • 相关阅读:
    javascirpt Scoket
    黑马程序员面试题(一)交通灯管理系统
    中软国际实习总结
    黑马程序员Java基础正则表达式
    黑马程序员Java基础加强Java高新技术
    黑马程序员JAVA基础GUI
    面试题(二)银行业务调度系统
    黑马程序员JAVA基础IO流之File 类
    黑马程序员JAVA基础IO流其他类
    黑马程序员Java基础网络编程
  • 原文地址:https://www.cnblogs.com/Doc-Yu/p/12113085.html
Copyright © 2011-2022 走看看