是什么
Docker Compose 是一个容器编排的工具,通过编写一个简略的 yml 配置文件来定义应用程序所须要的所有服务(如 web 利用的 lamp),而后通过一个简略的 docker-compose up 命令就能够标准化的创立所有容器并启动服务。
docker-compose.yml
一个简略的示例
version: '3' # 版本,有 1.x,2.x,3.x 跟 docker 版本有对应关系,配置也有些差别,用新版就好了
services: # 定义一组服务
web: # 第一个服务
hostname: webapp # 给容器起个名字
build: # 指定镜像起源,这是其中一种,应用 dockerfile 构建
context: ../ # docker run 运行的上下文门路
dockerfile: build/Dockerfile # dockerfile 文件地位,留神跟上一个配置对应,不指定默认是当前目录的 Dockerfile
networks: # 指定网络
- dev-local-network # 网络名称,须要先定义
depends_on: # 指定依赖服务,服务会在依赖服务启动后再开启
- mysql # 服务名称
ports: # 端口映射
- "80:80" # 宿主机端口到容器端口的映射
volumes: # 宿主机的数据卷或文件挂载到容器里
- ../:/var/www/html # 宿主机门路:容器里的门路
environment: # 环境变量,有两种形式,间接键值对或者 env_file
OMS_DB_HOST: ${OMS_DB_HOST} # ${} 示意取配置文件里的值,默认文件是以后默认的.env,也能够 --env-file 指定门路
command: ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf", "--nodaemon"] # 这是容器启动后的第一个命令,留神是要在前台的命令,不能执行完就完结了,不然容器启动就敞开了
mysql: # 第二个服务了
image: "mysql:5.7" # 指定镜像源的第二种形式,间接指定 image,这是是官网的 mysql 5.7 版本
networks: # 定义网络
dev-local-network: # 网络名称,下面用到的网络就是这里定义的
启动
docker-compose -f .\build\docker-compose.yml --env-file .\build\.env up -d
-f 指定 yml 文件门路,不指定默认为当前目录下的 docker-compose.yml 文件
–env-file 指定变量配置门路,就是下面说到的 ${}, 默认当前目录的 .env 文件,没有也没关系,就没有配置
-d 示意后盾启动
进行
docker-compose -f .\build\docker-compose.yml stop
服务进行,然而创立的容器依然保留,下次能够持续应用
销毁
docker-compose -f .\build\docker-compose.yml down
服务进行后,一并把容器也删除掉
volume 权限
volume 挂载的目录默认与缩主机属主和权限也雷同,缩主机中属主是 root,那在容器中对应的也是 root,然而并不是残缺的缩主机的 root 权限,如果要以特权模式运行,能够指定 –privileged 参数(慎用)。