华子目录
获取haproxy镜像
bash
[root@docker-node1 ~]# docker pull haproxy:2.3
建立haproxy容器
的数据卷
conf目录
为数据卷
bash
[root@docker-node1 ~]# mkdir /var/lib/docker/volumes/conf/
获取haproxy
的配置文件
bash
[root@docker-node1 ~]# yum install haproxy -y --downloadonly --downloaddir=/mnt
[root@docker-node1 ~]# cd /mnt/
[root@docker-node1 mnt]# rpm2cpio haproxy-2.4.17-3.el9.x86_64.rpm | cpio -id
[root@docker-node1 mnt]# ls
etc haproxy-2.4.17-3.el9.x86_64.rpm usr var
- 将
配置
文件cp
到conf数据卷
中
bash
[root@docker-node1 mnt]# cd etc/haproxy/
[root@docker-node1 haproxy]# cp haproxy.cfg /var/lib/docker/volumes/conf/
- 修改配置文件
bash
[root@docker-node1 haproxy]# cd /var/lib/docker/volumes/conf/
[root@docker-node1 conf]# vim haproxy.cfg

编写yaml文件
bash
[root@docker-node1 ~]# cd huazi/
[root@docker-node1 huazi]# vim haproxy.yml
services:
web1:
image: nginx:1.23
container_name: webserver1
restart: always
expose:
- 80
volumes:
- data_web1:/usr/share/nginx/html
networks:
- internel
web2:
image: nginx:1.23
container_name: webserver2
restart: always
expose:
- 80
volumes:
- data_web2:/usr/share/nginx/html
networks:
- internel
haproxy:
image: haproxy:2.3
container_name: haproxy
restart: always
ports:
- "80:80"
volumes:
- /var/lib/docker/volumes/conf/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
networks:
- internel
- externel
networks:
internel:
driver: bridge
externel:
driver: bridge
volumes:
data_web1:
name: data_web1
data_web2:
name: data_web2
运行
bash
[root@docker-node1 huazi]# docker compose -f haproxy.yml up -d
bash
[root@docker-node1 huazi]# docker compose -f haproxy.yml ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
haproxy haproxy:2.3 "docker-entrypoint.s..." haproxy 13 hours ago Up 13 hours 0 .0.0.0:80->80/tcp, :::80->80/tcp
webserver1 nginx:1.23 "/docker-entrypoint...." web1 13 hours ago Up 13 hours 8 0/tcp
webserver2 nginx:1.23 "/docker-entrypoint...." web2 13 hours ago Up 13 hours 8 0/tcp
测试
建立测试网页
bash
[root@docker-node1 huazi]# echo webserver1 > /var/lib/docker/volumes/data_web1/_data/index.html
[root@docker-node1 huazi]# echo webserver2 > /var/lib/docker/volumes/data_web2/_data/index.html
bash
[root@docker-node1 huazi]# curl 172.25.254.100
webserver1
[root@docker-node1 huazi]# curl 172.25.254.100
webserver2