使用Docker Compose部署
1.简介
多数现代应用都是由多个更小的服务协调工作而成的,比如:
- WEB 前端
- 订单管理
- 品类管理‘
- 后台数据库
多服务的部署和管理是困难的,Docker Compose可以解决这个问题,其通过一个声明式的配置文件描述整个文件,并通过一条命令完成部署,应用部署成功后,可以通过简单命令对其进行完整生命周期的管理。
2.docker Compose背景
docker Compose是一个需要在docker主机上进行安装的外部python工具,使用时,首先编写定义多容器的YAML文件,然后交给docker-compose命令处理,docker Compose就会基于docker引擎API完成应用部署
3.docker Compose安装
3.1 mac
无需额外安装,安装DfM后也就安装了docker compose
3.2 linux
-
下载二进制文件
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
修改文件权限
chmod +x /usr/local/bin/docker-compose
-
检查安装情况
docker-compose --version
4. docker Compose 部署应用
实例地址:https://github.com/nigelpoulton/counter-app
4.1 YAML文件
version: "3.5"
services:
web-fe:
build: .
command: python app.py
ports:
- target: 5000
published: 5000
networks:
- counter-net
volumes:
- type: volume
source: counter-vol
target: /code
redis:
image: "redis:alpine"
networks:
counter-net:
networks:
counter-net:
volumes:
counter-vol:
-
version
定义Compose文件格式版本,建议使用最新
-
services
用于定义不同的应用服务,上面的例子中是一个前端服务和一个redis数据库服务,将每个服务部署在各自的容器中
-
networks
用于指引docker创建新的网络,默认情况下会创建bridge单主机网络实现同一主机上的容器链接,可以使用driver属性来指定网络的类型
# 允许独立容器链接在创建的名为over-net的overlay网络上 networks: over-net: driver:overlay attachable:true
-
volumes
用来指引docker建立新的卷
-
service的三级key:
build:基于当前目录构建镜像,一般当前目录下也存在Dockerfile文件,指示某服务如何构建
command:指定运行某程序作为主程序
ports:指定主机与docker的端口映射
networks:使docker接入网络
volumes:指定将卷挂载到容器内目录
4.2 部署
-
启动: docker-compose up &
默认情况下开始查找名为docker-compose.yml的文件,如果文件时是其他名字,需要在命令中使用-f指定
-
使用docker image ls查看
5.docker Compose管理应用
-
停止和关闭应用:docker-compose down
-
查看状态:docker-compose ps
-
查看各服务(容器)内运行的进程:docker-compose top
-
停止运行保留资源:docker-compose stop
-
重启应用:docker-compose restart
-
更新:所有对卷中源码的修改会立即显示在容器内的卷里
更改源码
查找挂载点:docker volume inspect |grep Mount
将代码复制进去完成更新