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
相关推荐
weixin_4258782310 分钟前
k8s 自动伸缩的场景与工作原理
java·容器·kubernetes
lzz的编码时刻13 分钟前
K8s私有仓库拉取镜像报错解决:x509 certificate signed by unknown authority
云原生·容器·kubernetes
码哝小鱼21 分钟前
docker stack常用命令
docker·容器·eureka
用手码出世界1 小时前
【Linux】进程间通信、匿名管道、进程池
linux·运维·服务器
HHONGQI1231 小时前
Linux 基础入门操作 前言 linux操作指令介绍
linux·运维·服务器
电星托马斯1 小时前
Linux如何设置bash为默认shell
linux·运维·服务器·笔记·程序人生·bash·个人开发
矛取矛求2 小时前
VMware 安装 Ubuntu 全流程实战指南:从零搭建到深度优化
linux·运维·ubuntu
企鹅侠客2 小时前
CentOS系统安装详细教程
linux·运维·centos
Hey! Hey!2 小时前
Ubuntu桌面系统安装VirtualBox教程
linux·运维·ubuntu
NorthCastle3 小时前
Centos7 上 卸载 docker
运维·docker·容器