2021年11月9日 星期二

透過 ansible 限制docker-compose 執行的cpu與記憶體

 實際場域遇到一個狀況

在Window Server運行node api server

發生node吃掉100%cpu 而讓系統無法回應


將node api server以docker佈署到Linux主機上

希望可以限制每個continainer的資源

限制可使用的cpu與記憶體

佈署docker container是透過ansible執行

ansible設定docker-compose的cpu限制 在3.x版後就不支援了

只能透過docker執行

要透過docker-compose執行 只能透過shell執行


安裝

1.docker-compose.yml

node-api-server:

  image: node:12.22.7-alpine3.14

  container_name: node-api-server

  working_dir: /usr/src/NODE_API_SERVER/bin

  restart: always

  command: >

    sh -c 'node index'

  volumes:

    - '/home/vagrant/project_pools:/usr/src/'

  ports:

    - 12345:12345

    - 9229:9229

  deploy:

    resources:

      limits:

        cpus: '0.40'

        memory: '300M'

2.ansible 安裝檔 install.yml

tasks

  - name: build docker

    become: true

    docker_compose:

      project_src: 'docker-comose檔案所在的目錄'

3.ansible 執行檔start.yml

tasks:

  - name: Shell Start node-api-server

    shell:

      cmd: docker-compose --compatibility up -d

      chdir: 'docker-comose檔案所在的目錄'

      

參考

https://blog.yowko.com/docker-compose-3-cpu-memory-limit/

沒有留言: