docker打包haproxy并代理web或mysql集群

1、需求:

使用haproxy代理两个服务(web服务或者是mysql服务)

2、编写Dockerfile

2.1、创建Dockerfile专用目录

复制代码
mkdir /docker/images/haproxy -p && cd /docker/images/haproxy

2.2、下载软件包到Dockerfile专用目录

复制代码
curl -O https://www.haproxy.org/download/2.4/src/haproxy-2.4.2.tar.gz

或者下载这个 https://download.csdn.net/download/cyw8998/89069508

2.3、定制配置文件haproxy.cfg

bash 复制代码
cat << 'CAT_END' > haproxy.cfg
global
       chroot /usr/local/haproxy/
       maxconn 4096
       uid 99
       gid 99
       daemon
       nbproc 1
       pidfile /usr/local/haproxy/haproxy.pid
       log 127.0.0.1 local3 info
defaults
       log global
       mode   http
       option http-keep-alive
       option forwardfor
       retries 3
       maxconn 4096
       timeout connect 120s
       timeout client 120s
       timeout server 120s
    
listen status
       bind 0.0.0.0:9999
       mode http
       log global
       stats enable
       stats uri /haproxy-stats
       stats auth haadmin:123456
listen web_port
       bind 0.0.0.0:80
       mode http
       log global
       balance roundrobin
       server web1 192.168.0.9:8090 check inter 2000 fall 3 rise 5
       server web2 192.168.0.9:8090/Zm check inter 2000 fall 3 rise 5
listen mysql-cluster
    bind 0.0.0.0:3306
    mode tcp
    balance roundrobin
    option mysql-check
    server mysql1 192.168.0.9:13306 check weight 2 inter 2000 rise 2 fall 5
    server mysql2 192.168.0.9:13307 check weight 2 inter 2000 rise 2 fall 5
CAT_END

2.4、编写haproxy运行脚本

bash 复制代码
cat << 'CAT_END' > entrypoint.sh
!/bin/bash
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
tail -f /etc/hosts
CAT_END

2.5、定制Dockerfile

bash 复制代码
cat << 'CAT_END' > Dockerfile
FROM ubuntu:latest
MAINTAINER cyc author

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

RUN apt-get update && apt install make gcc build-essential libssl-dev zlib1g-dev libpcre3 libpcre3-dev libsystemd-dev libreadline-dev -y && \
cd /usr/local/src/haproxy-2.4.2 && \
make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 \
PREFIX=/usr/local/haproxy-2.4.2 && make install PREFIX=/usr/local/haproxy-2.4.2 && \
ln -s /usr/local/haproxy-2.4.2 /usr/local/haproxy && rm -rf /usr/local/src/haproxy* && \
apt-get autoclean && apt-get clean && apt-get autoremove

ADD haproxy.cfg /etc/haproxy/haproxy.cfg
ADD entrypoint.sh /root/entrypoint.sh

EXPOSE 80 3306 9999

CMD ["bash","/root/entrypoint.sh"]
CAT_END

2.6、构建镜像

复制代码
docker build -t haproxy:v2.4.2 .

3.1、启动容器

复制代码
docker run -d -p 13301:3306 -p 9999:9999 haproxy:v2.4.2
相关推荐
马立杰3 小时前
H3CNE-33-BGP
运维·网络·h3cne
Linux运维老纪3 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
云空4 小时前
《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》
运维·人工智能·web安全·网络安全·开源·网络攻击模型·安全威胁分析
没有名字的小羊5 小时前
Cyber Security 101-Build Your Cyber Security Career-Security Principles(安全原则)
运维·网络·安全
杨浦老苏5 小时前
开源音乐管理软件Melody
docker·群晖·多媒体
千夜啊5 小时前
Nginx 运维开发高频面试题详解
运维·nginx·运维开发
存储服务专家StorageExpert6 小时前
答疑解惑:如何监控EMC unity存储系统磁盘重构rebuild进度
运维·unity·存储维护·emc存储
杨浦老苏7 小时前
面向npm的实时仪表板Dashly
网络·docker·群晖·导航
chian-ocean8 小时前
从理论到实践:Linux 进程替换与 exec 系列函数
linux·运维·服务器
敖行客 Allthinker8 小时前
从 UTC 日期时间字符串获取 Unix 时间戳:C 和 C++ 中的挑战与解决方案
linux·运维·服务器·c++