docker-compose scale
docker-compose scale
配置
https://github.com/docker/compose/issues/5586
version: '2.2'
services:
template:
image: tutum/hello-world
scale: 2
version: "3"
services:
pg:
image: postgres:latest
networks:
default:
aliases:
- rdb.test.me
pgadmin:
image: dpage/pgadmin4:latest
deploy:
replicas: 3
environment:
HOSTNAME: rdba.test.me
PGADMIN_DEFAULT_EMAIL: user@test.me
PGADMIN_DEFAULT_PASSWORD: SuperSecret
命令
https://noobtomaster.com/docker/running-and-scaling-applications-using-compose/#:~:text=Scaling%20your%20application%20becomes%20effortless%20with%20Docker%20Compose.,it%20to%20three%20containers%3A%20docker-compose%20up%20--scale%20web%3D3
version: '3'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./app:/usr/share/nginx/html
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=secret
docker-compose updocker-compose up --scale web=3
microservice-demo -- scale config
https://github.com/fanqingsong/microservice-demo
version: '2'
services:
gateway:
build: traefik
command: --api --providers.docker --tracing.instana.logLevel="DEBUG" --accesslog # Enables the web UI and tells Traefik to listen to docker
networks:
- microservices
ports:
- "80:80"
# - "443:443"
- "9090:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
user:
build: user
networks:
- microservices
# ports:
# - "8081:80"
cart:
build: cart
networks:
- microservices
# ports:
# - "8082:80"
product:
build: product
networks:
- microservices
# ports:
# - "8083:80"
event:
build: event
networks:
- microservices
# ports:
# - "8084:80"
web:
build: web
networks:
- microservices
scale: 2
# ports:
# - "8085:80"
networks:
microservices:
driver: bridge
启动

测试

traefic demo
scale动态扩展, 扩展容器会自动注册到 traefic
https://github.com/vegasbrianc/docker-compose-demo/tree/master
version: '3'
services:
whoami:
image: containous/whoami # A container that exposes an API to show its IP address
labels:
- "traefik.frontend.rule=Host:whoami.docker.localhost"
redis:
image: redis
networks:
- back-tier
reverse-proxy:
image: traefik
command: --api --providers.docker --tracing.instana.logLevel="DEBUG" --accesslog # Enables the web UI and tells Traefik to listen to docker
ports:
- "80:80" # The HTTP port
- "8080:8080" # The Web UI (enabled by --api)
volumes:
- /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
Now comes the fun part of compose which is scaling. Let's scale our web service from 1 instance to 5 instances. This will now scale our web service container. We now should run an update on our stack so the Loadbalancer is informed about the new web service containers.
docker-compose scale whoami=5Now run our curl command again on our web services and we will now see the hostname change. To get a deeper understanding tail the logs of the stack to watch what happens each time you access your web services.
``` docker-compose logs whoami whoami_5 | Starting up on port 80 whoami_4 | Starting up on port 80 whoami_3 | Starting up on port 80 whoami_2 | Starting up on port 80 whoami_1 | Starting up on port 80 ```Here's the output from my docker-compose logs after I curled the
whoamiapplication so it is clear that the round-robin is sent to all 5 web service containers.``` reverse-proxy_1 | 172.26.0.1 - - [01/May/2019:19:16:34 +0000] "GET /favicon.ico HTTP/1.1" 200 647 "http://whoami.docker.localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36" 10 "Host-whoami-docker-localhost-1" "http://172.26.0.2:80" 1ms ```
参考
https://reintech.io/blog/scaling-services-docker-compose

浙公网安备 33010602011771号