179 votes

Comment spécifier la limite de mémoire et d'UC dans docker compose la version 3

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
 

91voto

Berndinox Points 610
deploy:
  resources:
    limits:
      cpus: '0.001'
      memory: 50M
    reservations:
      cpus: '0.0001'
      memory: 20M

Plus: https://docs.docker.com/compose/compose-file/#resources

Dans vous cas précis:

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

Note:

  • Exposer n'est pas nécessaire, il sera exposé par défaut sur votre pile réseau.
  • Les Images doivent être pré-construit. Construire dans la v3 n'est pas possible
  • "Restart" est également déconseillé. Vous pouvez utiliser redémarrer en vertu de déployer sur l'échec de l'action
  • Vous pouvez utiliser une application autonome d'un nœud "essaim", v3 la plupart des améliorations (si pas tous) sont pour l'essaim

À Noter Également: Les réseaux dans l'Essaim de mode ne font pas le pont. Si vous souhaitez vous connecter à un usage interne uniquement, vous devez joindre au réseau. Vous pouvez 1) spécifier un réseau externe à l'intérieur d'un autre fichier composer, ou d'avoir à créer le réseau --amovible paramètre (docker réseau de création d superposition de Mon Réseau --amovible) Sinon, vous devez publier le port comme ceci:

ports:
  - 80:80

68voto

saw303 Points 1339

Docker Composer ne prend pas en charge l' deploy - clés. C'est seulement respecté lorsque vous utilisez votre version 3 fichier YAML dans un Docker de la Pile.

Ce message est affiché lorsque vous ajoutez l' deploy key docker-compose.yml fichier, puis exécutez docker-compose up -d

AVERTISSEMENT: Certains services (base de données) utiliser le "déployer" la clé, qui sera ignoré. Composer ne prend pas en charge " à déployer de configuration - utilisation docker stack deploy pour le déployer sur un essaim.

La documentation (https://docs.docker.com/compose/compose-file/#deploy) dit:

Spécifier la configuration liés au déploiement et au fonctionnement de services. Cela ne prend effet que lors du déploiement d'un essaim avec docker pile de déployer, et est ignoré par docker-composer et docker-composer exécuter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X