docker compose 应用案例 web负载均衡

来源:互联网 发布:买了域名怎么卖 编辑:程序博客网 时间:2024/06/06 02:27

安装docker-compose

这种方式是将Compose当做一个Python应用从pip源中安装, 其他安装方式可以自行百度。
sudo pip3 install -U docker-compose

安装完成后,可以查看docker-compose的用法:
docker-compose -h

这里写图片描述

新建工作目录

本文将haproxy_web作为案例演示的工作目录。
整体文件结构如下:

这里写图片描述

docker-compose.yml 是docker-compose的配置文件,用于编排容器群。
haproxy目录下的haproxy.cfg 是haproxy负载均衡器的配置文件
web目录下是用来制作web应用容器的目录。
Dockerfile是镜像制作的文件
static views conf是web项目的静态资源, myserver是改名后的应用程序。 web目录下的之后要挂在进centos:latest容器内。

制作web应用容器

因为之前使用过golang语言的beego框架, 这里为了方便就直接使用beego框架的案例了。
在beego项目的目录下执行:
go build main.go

这里写图片描述

绿色的main就是这个web项目的可执行文件, 值得注意的是本机使用的是ubuntu 64位,要使用的web服务器是centos 64位, 所以这里build就缺省了相应的构建参数。
将这个 main可执行文件 conf目录 static目录 views目录 拷贝到工作目录下的web目录下 main文件改名为myserver. 将 conf目录下的配置文件端口8080改成80端口。
web目录下结构如下:
这里写图片描述

编辑Dockerfile文件:

vim Dockerfile

文件内容如下:

FROM centos:latestWORKDIR /web-serverADD . /web-serverEXPOSE 8080RUN chmod 755 myserver CMD ./myserver

这里可以使用docker build -t myserver:1.0 .命令来构建镜像,docker run -p 80:80 -d myserver:1.0运行镜像, 来测试Dockerfile文件是否正确配置。

负载均衡配置

编辑负载均衡的配置文件:
vim haproxy.cfg

文件内容如下:

global     log 127.0.0.1 local0    log 127.0.0.1 local1 notice    maxconn 4096defaults    log global    mode http    option httplog    option dontlognull    timeout connect 5000ms    timeout client 50000ms    timeout server 50000mslisten stats    bind 0.0.0.0:70    mode http    stats enable    stats hide-version    stats scope .    stats realm Haproxy\ Statistics    stats uri /    stats auth user:passfrontend balancer    bind 0.0.0.0:80    mode http    default_backend web_backendsbackend web_backends    mode http    option forwardfor    balance roundrobin    server weba weba:80 check    server webb webb:80 check    server webc webc:80 check    option httpchk GET /    http-check expect status 200

docker-compose配置

编辑docker-compose配置文件docker-compose.yml:

vim docker-compose.yml

内容如下:

weba:    build: ./web    expose:        - 80webb:    build: ./web    expose:        - 80webc:    build: ./web    expose:        - 80haproxy:    image: haproxy:1.6    volumes:        - ./haproxy:/haproxy-override        - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro    links:        - weba        - webb        - webc    ports:        - "80:80"        - "70:70"

在工作目录下运行:

docker-compose up --build

运行结果如下:
这里写图片描述
这里写图片描述

注意:
为了加速构建速度, 在之前应该拉去相应的镜像:

docker pull centos:latestdocker pull haproxy:1.6
原创粉丝点击