Docker(Ⅷ)-DockerFile制作haporxy镜像

构建haporxy镜像

  • 构建出 haproxy 镜像,将 haproxy 通过容器的方式运行。

准备Dockerfile文件

//确定工作目录
pwd
/opt/dockerfile/web/tomcat/tomcat-app2

//编写Dockerfile文件
vim Dockerfile 

#Haproxy Base Image
#
FROM centos-base:v1

LABEL sunxiaobo "952098151@qq.com"

RUN yum -y install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate 

ADD haproxy-2.0.12.tar.gz /usr/local/src/

RUN cd /usr/local/src/haproxy-2.0.12 && make ARCH=x86_64 TARGET=linuxglibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy && cp haproxy /usr/sbin/ && mkdir /usr/local/haproxy/run

ADD haproxy.cfg /etc/haproxy/ 

ADD start_haproxy.sh /usr/bin

EXPOSE 80 9999

CMD ["/usr/bin/start_haproxy.sh"]

准备haproxy源码和配置文件

//确定工作目录
pwd
/opt/dockerfile/web/haporx
--------------------------------
//查看目录结构
tree

.
├── build-command.sh
├── Dockerfile
├── haproxy-2.0.12.tar.gz
├── haproxy.cfg
└── start_haproxy.sh

0 directories, 5 files

准备haporxy配置文件

//确定工作目录
pwd
/opt/dockerfile/web/haporxy

//编写haproxy.fcg文件
vim haproxy.fcg

global
#maxconn 100000
chroot /usr/local/haproxy
#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
#user haproxy
#group haproxy
daemon
nbproc 1 
#cpu-map 1 0
#cpu-map 2 1 
#cpu-map 3 2 
#cpu-map 4 3 
pidfile /usr/local/haproxy/run/haproxy.pid
log 127.0.0.1 local3 info

defaults
option http-keep-alive
option  forwardfor
#maxconn 100000
mode http
timeout connect 300000ms
timeout client  300000ms
timeout server  300000ms

listen stats
mode http
bind 0.0.0.0:9999
stats enable
log global
stats uri /haproxy-status
stats auth bokebi:960201

listen web_port
bind 0.0.0.0:80
mode http
log global
balance roundrobin
server web1 192.168.26.208:8080 check inter 3000 fall 2 rise 5
server web2 192.168.26.209:8080 check inter 3000 fall 2 rise 5

准备tomcat启动执行脚本

//确定工作目录
pwd
/opt/dockerfile/web/haporxy

//创建启动脚本
vim run_haproxy.sh

#!/bin/bash
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg 
tail -f /etc/hosts

准备镜像构建脚本

//确定工作目录
pwd
/opt/dockerfile/web/haporxy

//创建构建脚本
vim build-command.sh

#!/bin/bash
docker build -t centos-haporxy:2.0.12 .

执行构建haporxy镜像

file

从镜像启动容器

//启动容器,注意不用指定shell环境
docker run --rm -it -p 80:80 -p 9999:9999 centos-haporxy:2.0.12

file

web访问验证

  • 浏览器访问http://192.168.26.207/linux39/

file

访问haporxy控制端

  • 下图中 web2 服务器,需要将 tomcat 镜像从镜像服务器把 tomcat 镜像导出,然后 scp 到 web2 服务器,然后导入镜像,最后通过镜像启动一个容器并监听本机的 8080 端口即可,否则 web2 服务器状态显示异常。

  • 浏览器访问http://192.168.26.207:9999/haproxy-status

file

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注