Je ne parviens pas à spécifier le processeur et la mémoire pour les services spécifiés dans la version 3.
Avec la version 2, cela fonctionne bien avec les paramètres "mem_limit" & "cpu_shares" sous les services. Mais cela échoue lors de l'utilisation de la version 3, les placer dans la section deploy ne semble pas digne d'intérêt sauf si j'utilise le mode swarm.
Quelqu'un peut aider?
version: "3"
services:
node:
build:
context: .
dockerfile: ./docker-build/Dockerfile.node
restart: always
environment:
- VIRTUAL_Host=localhost
volumes:
- logs:/app/out/
expose:
- 8083
command: ["npm","start"]
cap_drop:
- NET_ADMIN
- SYS_ADMIN
deploy:
resources:
limits:
cpus: '0.001'
memory: 50M
reservations:
cpus: '0.0001'
memory: 20M
Plus: https://docs.docker.com/compose/compose-file/#resources
Dans votre cas spécifique:
version: "3"
services:
node:
image: USER/Your-Pre-Built-Image
environment:
- VIRTUAL_Host=localhost
volumes:
- logs:/app/out/
command: ["npm","start"]
cap_drop:
- NET_ADMIN
- SYS_ADMIN
deploy:
resources:
limits:
cpus: '0.001'
memory: 50M
reservations:
cpus: '0.0001'
memory: 20M
volumes:
- logs
networks:
default:
driver: overlay
Remarque:
Remarque: Les réseaux en mode Swarm ne pontent pas. Si vous souhaitez vous connecter uniquement en interne, vous devez vous connecter au réseau. Vous pouvez 1) spécifier un réseau externe dans un autre fichier de composition ou créer le réseau avec le paramètre --attachable (réseau docker créer -d superposer My-Network --attachable). Sinon, vous devez publier le port comme suit:
ports:
- 80:80
Docker Compose ne prend pas en charge la touche deploy
. Il n’est respecté que lorsque vous utilisez votre fichier YAML version 3 dans une pile Docker.
Ce message est imprimé lorsque vous ajoutez la touche deploy
à votre fichier docker-compose.yml
, puis que vous exécutez docker-compose up -d
.
AVERTISSEMENT: Certains services (base de données) utilisent la clé 'deploy', qui sera ignorée. Compose ne prend pas en charge la configuration 'deploy' - utilisez
docker stack deploy
pour le déployer sur un essaim.
La documentation ( https://docs.docker.com/compose/compose-file/#deploy ) indique:
Spécifiez la configuration liée au déploiement et à l'exécution des services. Cela ne prend effet que lors du déploiement sur un essaim avec déploiement de la pile de docker, et est ignoré par docker-compose up et docker-composition run.
Je sais que le sujet est un peu vieux et semble obsolète, mais j'ai quand même pu utiliser ces options:
deploy:
resources:
limits:
cpus: '0.001'
memory: 50M
lors de l'utilisation de la version 3.7 de docker-compose
Ce qui a aidé dans mon cas, utilisait cette commande:
docker-compose --compatibility up
Le drapeau --compatibility
signifie (tiré de la documentation):
If set, Compose will attempt to convert deploy keys in v3 files to their non-Swarm equivalent
Je trouve ça génial de ne pas avoir à reconvertir mon fichier de composition de docker en v2.