Stay Hungry,Stay Foolish!

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 up
docker-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

 

Scaling

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=5
 

Now 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 whoami application 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

 

posted @ 2024-06-28 19:49  lightsong  阅读(2)  评论(0编辑  收藏  举报
Life Is Short, We Need Ship To Travel