Docker Compose是一种编排服务,基于Python语言实现,用于在Docker上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用,用户可以使用配置文件定义多容器的构建,使用一条指令安装这个应用的依赖,并完成构建,解决了容器之间如和管理编排的问题。
Docker Compose中的两个重要概念:
1. 服务: 一个应用容器可以包含若干运行相同镜像的容器实例;
2. 项目:由一组关联的应用容器组成的一个完整的业务单元。在docker-compose.yml文件中定义。
Docker-Compose.yml 文件属性:
Image:指定为镜像名称或者镜像ID,如果镜像本地不存在Compose将会尝试拉取该镜像;
Build:指定Dockerfile所在文件夹路径。Compose将会利用该镜像自动构建,然后使用;
Command: 覆盖容器启动后默认执行的命令;
Link:连接到其他服务中的容器;
Ports:端口映射
Expose:暴露端口信息
Volumes:卷挂载路径设置;
其他:https://docs.docke.com/compsoe/compose-file/
###安装
[root@server1 ~]# curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@server1 ~]# chmod +x /usr/local/bin/docker-compose
###创建yml文件
version: "3.8"
services:
web1:
image: nginx:1.18.0
networks:
- webnet
volumes:
- ./web1:/usr/share/nginx/html
web2:
image: nginx:1.18.0
networks:
- webnet
volumes:
- ./web2:/usr/share/nginx/html
haproxy:
image: haproxy
networks:
- webnet
volumes:
- ./harproxy:/usr/local/etc/harproxy
ports:
- "80:80"
networks:
webnet:
###配置其他依赖文件
###页面设置
[root@server1 compose]# echo web1 > ./web1/index.html
[root@server1 compose]# echo web1 > ./web2/index.html
###haproxy配置
[root@server1 compose]# cat haproxy.cfg
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend public
bind *:80 name clear
default_backend dynamic
backend dynamic
balance roundrobin
server app1 web1:80 check inter 1000
server app2 web2:80 check inter 1000
###启动docker
[root@server1 compose]# docker-compose up -d
![](https://i-blog.csdnimg.cn/blog_migrate/3be200b5c969295abb5d38f86ff8440d.png)