dockerfile基于alpine构建haproxy

dockerfile基于alpine构建haproxy,第1张

dockerfile基于alpine构建haproxy 1. 结构目录
[root@localhost ~]# tree haproxy/
haproxy/
├── dockerfile
└── files
    ├── env.txt
    ├── haproxy-2.5.0.tar.gz
    ├── haproxycfg.sh
    ├── install.sh
    └── sysctl.conf

1 directory, 6 files
[root@localhost ~]# 
2. 编写dockerfile
[root@localhost ~]# cd haproxy/
[root@localhost haproxy]# cat dockerfile 
FROM alpine

LABEL MAINTAINER "lry [email protected]"

ENV version 2.5.0

ADD files/haproxy-${version}.tar.gz /tmp/
ADD files/install.sh /tmp/
ADD files/haproxycfg.sh /tmp/
ADD files/sysctl.conf /tmp/

RUN /tmp/install.sh
ENTRYPOINT /tmp/haproxycfg.sh

[root@localhost haproxy]#
3. 配置文件
[root@localhost haproxy]# cd files/
[root@localhost files]# ls
env.txt  haproxy-2.5.0.tar.gz  haproxycfg.sh  install.sh  sysctl.conf

//RS ip
[root@localhost files]# cat  env.txt 
RSs=172.17.0.2 172.17.0.3

//内核参数
[root@localhost files]# cat sysctl.conf 
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1

//安装脚本
[root@localhost files]# cat install.sh 
#!/bin/sh
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories
apk update
adduser -S -H -s /sbin/nologin haproxy
addgroup haproxy
apk add --no-cache -U make gcc pcre-dev bzip2-dev openssl-dev elogind-dev libc-dev dahdi-tools dahdi-tools-dev libexecinfo libexecinfo-dev ncurses-dev zlib-dev zlib

cd /tmp/haproxy-${version}
make TARGET=linux-musl USE_OPENSSL=1 USE_ZLIB=1 USE_PCRE=1 
make install PREFIX=/usr/local/haproxy
cp haproxy  /usr/sbin/
mkdir /etc/haproxy
apk del gcc make
rm -rf /tmp/haproxy-${version}/ /tmp/install.sh

//haproxy配置文件
[root@localhost files]# cat haproxycfg.sh 
#!/bin/sh

cat > /etc/haproxy/haproxy.cfg <> /etc/haproxy/haproxy.cfg < 
4. 构建镜像 
[root@localhost haproxy]# docker build -t haproxy:v1.0 .
.........忽略N行
(1/10) Purging gcc (10.3.1_git20211027-r0)
(2/10) Purging binutils (2.37-r3)
(3/10) Purging libatomic (10.3.1_git20211027-r0)
(4/10) Purging libgomp (10.3.1_git20211027-r0)
(5/10) Purging libgphobos (10.3.1_git20211027-r0)
(6/10) Purging make (4.3-r0)
(7/10) Purging mpc1 (1.2.1-r0)
(8/10) Purging mpfr4 (4.1.0-r0)
(9/10) Purging isl22 (0.22-r0)
(10/10) Purging gmp (6.2.1-r0)
Executing busybox-1.34.1-r3.trigger
OK: 35 MiB in 45 packages
Removing intermediate container 7d2ec6aa8327
 ---> c9813eff9a55
Step 9/9 : ENTRYPOINT /tmp/haproxycfg.sh
 ---> Running in 54c3e78ce2d5
Removing intermediate container 54c3e78ce2d5
 ---> bc383740a37a
Successfully built bc383740a37a
Successfully tagged haproxy:v1.0

[root@localhost haproxy]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
haproxy      v1.0      bc383740a37a   2 minutes ago   85.1MB
alpine       latest    c059bfaa849c   2 weeks ago     5.59MB
[root@localhost haproxy]#
6. 创建容器
//创建apache和nginx容器
[root@localhost haproxy]# docker run -d --name apache httpd
Unable to find image 'httpd:latest' locally
latest: Pulling from library/httpd
e5ae68f74026: Pull complete 
bc36ee1127ec: Pull complete 
d3576f2b6317: Pull complete 
f1aa5f54b226: Pull complete 
aa379c0cedc2: Pull complete 
Digest: sha256:fba8a9f4290180ceee5c74638bb85ff21fd15961e6fdfa4def48e18820512bb1
Status: Downloaded newer image for httpd:latest
dc5872009f97f546fbd54856d7a40c65ff13c1c60af0122470a18a357cb36cea
[root@localhost haproxy]# docker run -d --name nginx nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
e5ae68f74026: Already exists 
21e0df283cd6: Pull complete 
ed835de16acd: Pull complete 
881ff011f1c9: Pull complete 
77700c52c969: Pull complete 
44be98c0fab6: Pull complete 
Digest: sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603
Status: Downloaded newer image for nginx:latest
1f4fed0191c810938072da3c6bfc70d2a73ea7ff3b4bcbf7144ce6a51896405b
[root@localhost haproxy]# docker ps
ConTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS     NAMES
1f4fed0191c8   nginx     "/docker-entrypoint.…"   23 seconds ago       Up 22 seconds       80/tcp    nginx
dc5872009f97   httpd     "httpd-foreground"       about a minute ago   Up about a minute   80/tcp    apache
[root@localhost haproxy]#
//查看apache ip
[root@localhost haproxy]# docker inspect apache 
......省略N行
                "NetworkID": "18039c5e5ccec90bd886bf585700422392db62dbd2258ca378cf4eee1abc3f9f",
                    "EndpointID": "00bf38a60b64a858bbd35e445cc76e51ad70c58e6c11504d6c2a991c81b829af",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
......省略N行
//查看nginx ip
[root@localhost haproxy]# docker inspect nginx
......省略N行
                "NetworkID": "18039c5e5ccec90bd886bf585700422392db62dbd2258ca378cf4eee1abc3f9f",
                    "EndpointID": "0c34b972284c0dca798fa15173aee2c2da333b90f484bf161f3f68ab8cff2fbd",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
......省略N行
//填写RS ip
[root@localhost haproxy]# cat files/env.txt 
RSs=172.17.0.2 172.17.0.3
[root@localhost haproxy]# 

//利用haproxyv:1.0镜像创建容器
[root@localhost haproxy]# docker run -d --name haproxy -p 8080:80 --env-file files/env.txt haproxy:v1.0 
dc201555c9810abebb6037319db127d99db72cf64161e1fbefc6c5f3c7eefb78
[root@localhost haproxy]# docker ps
ConTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                   NAMES
dc201555c981   haproxy:v1.0   "/bin/sh -c /tmp/hap…"   8 seconds ago    Up 7 seconds    0.0.0.0:8080->80/tcp, :::8080->80/tcp   haproxy
1f4fed0191c8   nginx          "/docker-entrypoint.…"   10 minutes ago   Up 10 minutes   80/tcp                                  nginx
dc5872009f97   httpd          "httpd-foreground"       10 minutes ago   Up 10 minutes   80/tcp                                  apache
[root@localhost haproxy]# docker port haproxy 
80/tcp -> 0.0.0.0:8080
80/tcp -> :::8080
[root@localhost haproxy]#
7. 访问
[root@localhost ~]# curl 192.168.35.135:8080
It works!
[root@localhost ~]# curl 192.168.35.135:8080



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@localhost ~]#

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存