dockerfile构建haproxy的详细过程(构建HAProxy的镜像)

 更新时间:2025年03月13日 09:44:29   作者:wssswsss  
Dockerfile是一个用于构建Docker镜像的文本文件,包含了构建镜像所需的所有指令和说明,通过定义一系列命令和参数,本文详细介绍了如何使用Dockerfile一步步构建HAProxy的镜像,并指导如何创建和运行容器,实现负载均衡服务,感兴趣的朋友一起看看吧

什么是 Dockerfile?

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。

1. 结构目录

[root@localhost ~]# tree haproxy/
haproxy/
├── dockerfile
└── files
    ├── haproxy-2.5.0.tar.gz
    ├── haproxy.cfg
    ├── install.sh
    └── start.sh
1 directory, 5 files
[root@localhost ~]# 
[root@localhost ~]# cd haproxy/
[root@localhost haproxy]# ls
dockerfile  files
[root@localhost haproxy]# cat dockerfile 
FROM centos
LABEL MAINTAINER='pengyudong 1@2.com@qq.com'
ENV version 2.5.0
ADD files/haproxy-${version}.tar.gz /usr/src
ADD files/haproxy.cfg /etc/haproxy/
ADD files/install.sh /tmp/
ADD files/start.sh /usr/local/
RUN ["/bin/bash","-c","/tmp/install.sh"]
EXPOSE 80 8189
WORKDIR /usr/local/haproxy
CMD ["/usr/local/start.sh"]
[root@localhost haproxy]# 
[root@localhost haproxy]# cd files/
[root@localhost files]# ls
haproxy-2.5.0.tar.gz  haproxy.cfg  install.sh  start.sh
[root@localhost files]# vim start.sh 
[root@localhost files]# cat start.sh 
#!/bin/sh
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
/bin/bash
[root@localhost files]# cat 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==2{print $2}' /etc/os-release).repo 
yum -y install make gcc gcc-c++ pcre-devel bzip2-devel openssl-devel systemd-devel 
useradd -r -M -s /sbin/nologin haproxy 
cd /usr/src/haproxy-${version} 
cd /usr/src/haproxy-${version} && make clean && \
make -j $(nproc) TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE=1 USE_SYSTEMD=1 && \
make install PREFIX=/usr/local/haproxy && \
yum -y remove make gcc gcc-c++ && \
rm -rf /usr/src/haproxy-*
[root@localhost files]# cat 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 172.17.0.3:80 check inter 2000 fall 5
    server web02 172.17.0.4:80 check inter 2000 fall 5
[root@localhost files]#

2. 构建镜像

[root@localhost ~]# docker build -t pengyudong/haproxy:v1.0 haproxy/
root@localhost ~]# docker images
pengyudong/haproxy   v1.0      8819e319cf32   19 minutes ago   418MB
[root@localhost ~]# 

3. 创建容器

[root@localhost ~]# docker run -itd --name haproxy -p 8080:80 haproxy:v1.0
[root@localhost ~]# docker exec -it haproxy /bin/bash
[root@ce02ae7f027e 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:*                      
[root@ce02ae7f027e haproxy]# 
[root@localhost ~]# docker run -itd --name httpd pengyudong/httpd
462bd9babdcdac7f2abbb6da551858466659602bb3031129bb5b5de6e71853eb
[root@localhost ~]#  docker run -itd --name nginx nginx
0dffef28f17692db84e93c7caece9fbfe303d66b042bc1f40f13e0304c09227f
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE                     COMMAND                  CREATED          STATUS          PORTS                                             NAMES
0dffef28f176   nginx                     "/docker-entrypoint.…"   8 minutes ago    Up 8 minutes    80/tcp                                            nginx
462bd9babdcd   pengyudong/httpd          "/usr/local/apache/b…"   8 minutes ago    Up 8 minutes    80/tcp                                            httpd
ce02ae7f027e   pengyudong/haproxy:v1.0   "/usr/bin/start.sh"      22 minutes ago   Up 22 minutes   8189/tcp, 0.0.0.0:8080->80/tcp, :::8080->80/tcp   haproxy
[root@localhost ~]# 

到此这篇关于dockerfile构建haproxy的详细过程(构建HAProxy的镜像)的文章就介绍到这了,更多相关dockerfile构建haproxy内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Conda环境创建Docker镜像的完整步骤指南

    使用Conda环境创建Docker镜像的完整步骤指南

    Docker是实现容器化的主流工具之一,而Conda作为科学计算和Python的包管理器,与Docker的结合能为开发者提供高度灵活、易于管理的开发环境,这篇文章主要介绍了使用Conda环境创建Docker镜像的完整步骤,需要的朋友可以参考下
    2025-03-03
  • Docker系列compose ymal文件解析学习

    Docker系列compose ymal文件解析学习

    这篇文章主要介绍了Docker系列之compose ymal文件解析学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 如何免sudo使用docker命令详解

    如何免sudo使用docker命令详解

    有时候发现docker有的指令必须加sudo才能执行,下面这篇文章主要给大家介绍了关于如何免sudo使用docker命令的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面来一起看看吧。
    2017-12-12
  • docker容器映射tcp或udp端口-如何通过docker-compose.yml

    docker容器映射tcp或udp端口-如何通过docker-compose.yml

    这篇文章主要介绍了docker容器映射tcp或udp端口-如何通过docker-compose.yml问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Docker删除已存在的镜像的实现

    Docker删除已存在的镜像的实现

    本文主要介绍了Docker删除已存在的镜像的实现,删除已存在的 Docker 镜像,可以使用 docker rmi 命令,下面就来详细的介绍一下使用步骤,感兴趣的可以了解一下
    2023-08-08
  • 给运行中的docker容器添加新的端口

    给运行中的docker容器添加新的端口

    今天小编就为大家分享一篇关于给运行中的docker容器添加新的端口,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • docker搭建minio服务器,解决内网穿透后外网无法访问

    docker搭建minio服务器,解决内网穿透后外网无法访问

    这篇文章主要介绍了docker搭建minio服务器,解决内网穿透后外网无法访问的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Docker中的四种网络模式

    Docker中的四种网络模式

    Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器。本文详细介绍了docker中的四种网络模式,感兴趣的小伙伴可以参考一下
    2023-04-04
  • 通过Docker为本地DeepSeek-r1部署WebUI界面的完整教程

    通过Docker为本地DeepSeek-r1部署WebUI界面的完整教程

    本文详细介绍了如何通过Docker安装并配置OpenWebUI,一个功能丰富的自托管Web用户界面,用于与大型语言模型交互,文章步骤包括安装Docker、配置WSL2、使用dockerrun命令部署OpenWebUI,并提供了详细的命令解释和部署结果,需要的朋友可以参考下
    2025-02-02
  • Docker 容器日志分析

    Docker 容器日志分析

    这篇文章主要介绍了Docker 容器日志分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03

最新评论