- 参考
docker compose
https://docs.docker.com/compose/install/
开发部署流程
规划磁盘使用
在服务器上运行的Docker容器可以分为两类,
- 一类是业务型,主要是业务相关的接口服务,该类型容器采用了之前设计的代码镜像分离的原则,代码存储在Github上,代码可能会经常更新,镜像存储在私有镜像库中,变动可能性不大。
- 另一类是运维型,比如日志、监控等服务,该类型的容器就是来源一个镜像。
不管是那种类型的容器,由于这是正式环境,需要对容器的运行状态进行保存,所以在运行时都需要挂接服务器本地磁盘。
根据不同类型的容器规划了两个主目录存储:
/home/svr/codebase/
存储业务项目代码,内容来源是Github或是拷贝
/home/svr/opsbase/
存储运维类型的容器或是业务类型容器在运行过程中存储的数据
/home/svr/deploybase
存储用于部署的命令或文本
下载需要代码
由于代码和镜像是分离的,所以代码的下载和更新也需要单独处理
$ git clone https://github.com/dockersample/chapter2-webapi.git /home/svr/codebase/webapi
编排微服务
Docker Compose 是一个用于定义和运行多容器Docker应用程序的工具。
- 安装Compose
执行下面的命令下载最新的Compose
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#如果有执行权限问题执行下面的语句
$sudo chmod +x /usr/local/bin/docker-compose
#测试安装是否成功
$ docker-compose --version
- 编排微服务
现在咱们有两套微服务,一套是基于ELK的应用日志系统,另外一套是 dotnet core 开发的webapi
在目录 /home/svr/deploybase 目录下新建 docker-compose.yml 文件
version: '3'
services:
elk_log:
image: "192.168.10.224:5005/sebp/elk"
ports:
- "5601:5601"
- "9200:9200"
- "9300:9300"
volumes:
- /home/svr/opsbase/elk_log:/var/lib/elasticsearch
webapi:
image: "192.168.10.224:5005/djm/dotnet"
ports:
- "8001:5000"
volumes:
- /home/svr/codebase/webapi:/codebase
运行命令,根据上面的描述文件,一起启用上面的两个微服务
docker-compose up