docker compose 應用案例 web負載均衡
安裝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: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 pull centos:latest
docker pull haproxy:1.6