第五课:单机编排利器: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: {}
      
    ```
    
    
      
posted @ 2019-12-28 21:14  Doc-Yu  阅读(184)  评论(0编辑  收藏  举报