这种方式是将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容器内。
因为之前使用过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: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.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 pull centos:latest
docker pull haproxy:1.6