有時候我們一臺服務器不夠用的時候我們都會多加幾臺服務器,然后在做個負載均衡之類的操作,那么今天就交給大家一個很厲害的命令,可以很方便的進行負載均衡。
stevendeAir:flask-redis steven$ docker-compose up --scale web=3 -d
Creating network "flaskredis_default" with the default driver
WARNING: The "web" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.
Creating flaskredis_redis_1 ...
Creating flaskredis_web_1 ... error
Creating flaskredis_web_2 ... error
Creating flaskredis_web_3 ... done
我們想通過scale命令啟動三個web服務,竟然報錯了,原因是什么呢?原來是因為我們的yml文件,把端口映射到外部的8080,那么我們有單個web服務都映射到8080,就會出現(xiàn)端口占用的情況,怎么辦?刪除它就OK了。刪除之后的yml文件如下。。。
version: "2"
services:
redis:
image: redis
web:
build:
context: .
dockerfile: Dockerfile
environment:
REDIS_HOST: redis
刪除之后我們發(fā)現(xiàn)果然操作成功了
stevendeAir:flask-redis steven$ docker-compose up --scale web=3 -d
Recreating flaskredis_web_1 ...
Recreating flaskredis_web_1 ... done
Recreating flaskredis_web_2 ... done
Recreating flaskredis_web_3 ... done
這個時候我們還需要一個代理的鏡像,就是需要一個不變的ip,怎么做呢?看下面
version: "3"
services:
redis:
image: redis
web:
build:
context: .
dockerfile: Dockerfile
environment:
REDIS_HOST: redis
lb:
image: dockercloud/haproxy
links:
- web
ports:
- 8080:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock
這里要注意的是你需要把flask的啟動端口改成80,接下來我們操作一把。