文章目录
简介
微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。
Docker Compose是一种编排服务
,基于pyhton语言实现,是一个用于在 Docker 上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用
。
用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。解决了容器与容器之间如何管理编排的问题
。
Docker Compose 中有两个重要的概念
:
服务 (service)
:一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project)
:由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
一、下载安装
推荐方式:
下载地址:https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/
下载后放在: /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose %添加可执行权限
完成上述安装后会有docker-compose指令
二、docker-compose.yml常用属性
Image | 指定为镜像名称或镜像 ID,如果镜像在本地不存在,Compose 将会尝试拉取这个镜像 |
---|---|
Build | 指定 Dockerfile 所在文件夹的路径。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像 |
Command | 覆盖容器启动后默认执行的命令 |
Links | 链接到其它服务中的容器 |
Ports | 端口映射 |
Expose | 暴露端口信息 |
Volumes | 卷挂载路径设置 |
三、使用实例(部署nginx服务并且结合haproxy实现负载均衡)
1.项目整体目录结构
2.编写yml部署文件
version: "3.9" %指定语法的版本
services: %定义服务
web1: %服务名称
image: nginx %镜像,需提前下载好
networks:
- mynet
volumes: %挂载卷
- ./web1:/usr/share/nginx/html
web2:
image: nginx
networks:
- mynet
volumes:
- ./web2:/usr/share/nginx/html
haproxy:
image: haproxy
networks:
- mynet
ports:
- "80:80"
volumes:
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
networks:
mynet:
3.编写nginx测试页面
echo web1 > web1/index.html
echo web2 > web2/index.html
4.编写haproxy.cfg文件
global
maxconn 65535
stats socket /var/run/haproxy.stat mode 600 level admin
log 127.0.0.1 local0
uid 200
gid 200
#chroot /var/empty %更改1
daemon
defaults
mode http
log global
option httplog
option dontlognull
monitor-uri /monitoruri
maxconn 8000
timeout client 30s
retries 2
option redispatch
timeout connect 5s
timeout server 5s
stats uri /status %更改2
# The public 'www' address in the DMZ
frontend public
bind *:80 name clear %更改3
#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
#use_backend static if { hdr_beg(host) -i img }
#use_backend static if { path_beg /img /css }
default_backend dynamic
# The static backend backend for 'Host: img', /img and /css.
backend dynamic
balance roundrobin
server app1 web1:80 check inter 1000 %更改4
server app2 web2:80 check inter 1000 %更改5
5.创建并启动容器
注意:docker-compose命令必须在项目下运行
docker-compose up -d %加-d参数表示打入后台,此时无详细参数显示
6.效果测试