實際場域遇到一個狀況
在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/