docker compose 应用案例 web负载均衡

安装docker-compose

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

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

docker compose 应用案例 web负载均衡_第1张图片

新建工作目录

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

docker compose 应用案例 web负载均衡_第2张图片

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目录下结构如下:
docker compose 应用案例 web负载均衡_第3张图片

编辑Dockerfile文件:

vim Dockerfile

文件内容如下:

FROM centos:latest
WORKDIR /web-server
ADD . /web-server
EXPOSE 8080
RUN 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 4096

defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

listen 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:pass

frontend balancer
    bind 0.0.0.0:80
    mode http
    default_backend web_backends

backend 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:
        - 80

webb:
    build: ./web
    expose:
        - 80

webc:
    build: ./web
    expose:
        - 80

haproxy:
    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 compose 应用案例 web负载均衡_第4张图片
docker compose 应用案例 web负载均衡_第5张图片

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

docker pull centos:latest
docker pull haproxy:1.6

你可能感兴趣的:(docker)