Dockerfile制作haproxy镜像

Dockerfile制作haproxy镜像,第1张

Dockerfile制作haproxy镜像 1 镜像部署整体结构
[root@docker files]# tree /haproxy/
/haproxy/
├── Dockerfile
└── files
    ├── haproxy-2.5.0.tar.gz
    ├── haproxy.cfg
    ├── install.sh
    └── start.sh

1 directory, 5 files
[root@docker files]# 
2 Dockerfile编写
[root@docker haproxy]# cat Dockerfile 
# 基础镜像
FROM centos
# 镜像维护者信息
LABEL MAINTAINER='xixi [email protected]'
#变量
ENV version 2.5.0
#传文件到容器
ADD files/haproxy-${version}.tar.gz /usr/src/
ADD files/install.sh /tmp/
ADD files/start.sh /tmp/
ADD files/haproxy.cfg /etc/haproxy/
#镜像 *** 作指令
RUN ["/bin/bash","-c","/tmp/install.sh"] 
# 工作中目录
WORKDIR /usr/local/haproxy
 
 #暴露端口
EXPOSE 80 8189
#启动命令
CMD ["/bin/bash","/tmp/start.sh"]
3 执行脚本编写
root@docker haproxy]# cat files/install.sh 
#!/bin/bash

rm -rf /etc/yum.repos.d/* 
curl -o /etc/yum.repos.d/CentOS-base.repo https://mirrors.aliyun.com/repo/Centos-$(awk -F '"' 'NR==5{print $2}' /etc/os-release).repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-base.repo
yum -y install make gcc pcre-devel bzip2-devel openssl-devel systemd-devel 
useradd -r -M -s /sbin/nologin haproxy 
cd /usr/src/haproxy-${version}
make clean 
make -j $(grep 'processor' /proc/cpuinfo |wc -l)  
    TARGET=linux-glibc  
    USE_OPENSSL=1  
    USE_ZLIB=1  
    USE_PCRE=1  
    USE_SYSTEMD=1 && 
make install PREFIX=/usr/local/haproxy 
cp haproxy /usr/src
echo 'net.ipv4.ip_nonlocal_bind = 1' >>  /etc/sysctl.conf
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
yum -y remove gcc make 
rm -rf /var/cache/*
rm -rf /usr/src/haproxy-${version}
[root@docker haproxy]# 
4 启动脚本编写
[root@docker haproxy]# cat files/start.sh 
#!/bin/sh

/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
/bin/bash

[root@docker haproxy]# 
5 haproxy配置文件
[root@docker haproxy]# cat files/haproxy.cfg 
#--------------全局配置----------------
global
    log 127.0.0.1 local0  info
    #log loghost local0 info
    maxconn 20480
#chroot /usr/local/haproxy
    pidfile /var/run/haproxy.pid
    #maxconn 4000
    user haproxy
    group haproxy
    daemon
#---------------------------------------------------------------------
#common defaults that all the 'listen' and 'backend' sections will
#use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode http
    log global
    option dontlognull
    option httpclose
    option httplog
    #option forwardfor
    option redispatch
    balance roundrobin
    timeout connect 10s
    timeout client 10s
    timeout server 10s
    timeout check 10s
    maxconn 60000
    retries 3
#--------------统计页面配置------------------
listen admin_stats
    bind 0.0.0.0:8189
    stats enable
    mode http
    log global
    stats uri /haproxy_stats
    stats realm Haproxy Statistics
    stats auth admin:admin
    #stats hide-version
    stats admin if TRUE
    stats refresh 30s
#---------------web设置-----------------------
listen webcluster
    bind 0.0.0.0:80
    mode http
    #option httpchk GET /index.html
    log global
    maxconn 3000
    balance roundrobin
    cookie SESSION_cookie insert indirect nocache
    server web01 192.168.10.1:80  check inter 2000 fall 5
    server web02 192.168.10.2:80  check inter 2000 fall 5
    #server web01 192.168.80.102:80 cookie web01 check inter 2000 fall 5
[root@docker haproxy]# 
6 构建镜像
// 创建haproxy镜像
[root@Docker ~]# docker build -t haproxy:v2.0 haproxy/
[root@docker haproxy]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED          SIZE
haproxy         v2.0      0a48c089ff0b   53 minutes ago   410MB
nginx           latest    f652ca386ed1   8 days ago       141MB
busybox         latest    d23834f29b38   10 days ago      1.24MB
httpd           latest    ad17c88403e2   3 weeks ago      143MB
centos          latest    5d0da3dc9764   2 months ago     231MB
7 创建容器访问测试
[root@docker ~]# docker run -itd --name haproxy -P --rm haproxy:v2.0
bcfd0e7d144447a633f8ca4e0035aa040ef1e675970a25ae54542b727c9b1c66
[root@docker ~]# docker ps
ConTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                                                                                  NAMES
bcfd0e7d1444   haproxy:v2.0   "/bin/bash /tmp/star…"   18 seconds ago   Up 17 seconds   0.0.0.0:49158->80/tcp, :::49158->80/tcp, 0.0.0.0:49157->8189/tcp, :::49157->8189/tcp   haproxy

[root@docker ~]# docker exec -it haproxy /bin/bash
[root@bcfd0e7d1444 haproxy]# ss -antl
State     Recv-Q    Send-Q       Local Address:Port       Peer Address:Port   Process    
LISTEN    0         128                0.0.0.0:80              0.0.0.0:*                 
LISTEN    0         128                0.0.0.0:8189            0.0.0.0:*        

## 创建一个nginx和httpd容器用haproxy来做调度器
[root@docker ~]# docker run -itd --name nginx nginx  
[root@docker ~]# docker run -itd --name httpd httpd
[root@docker ~]# docker images
bcfd0e7d1444   haproxy:v2.0   "/bin/bash /tmp/star…"   18 seconds ago   Up 17 seconds   0.0.0.0:49158->80/tcp, :::49158->80/tcp, 0.0.0.0:49157->8189/tcp, :::49157->8189/tcp   haproxy
d86bbe61db41   nginx       "/docker-entrypoint.…"   2 hours ago      Up 2 hours      80/tcp                                                                                 a2
81142316f963   httpd       "httpd-foreground"       2 hours ago      Up 2 hours      80/tcp                                                                                 a1


[root@docker ~]# curl 192.168.10.3
It works!
[root@docker ~]# curl 192.168.10.3



Welcome to nginx!

html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

[root@docker ~]#

用本机IP加映射到本机的端口号来到web上访问

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5655885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存