Ich kann für die in Version 3 angegebenen Dienste keine CPU und keinen Arbeitsspeicher angeben.
In Version 2 funktioniert dies problemlos mit den Parametern "mem_limit" und "cpu_shares" unter den Diensten. Aber es schlägt fehl, wenn Sie Version 3 verwenden. Wenn Sie diese in den Bereitstellungsabschnitt stellen, ist dies nur dann sinnvoll, wenn Sie den Schwarmmodus verwenden.
Kann jemand helfen?
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
Mehr: https://docs.docker.com/compose/compose-file/#resources
In Ihrem speziellen Fall:
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
Hinweis:
Beachten Sie auch: Netzwerke im Schwarmmodus überbrücken nicht. Wenn Sie nur eine interne Verbindung herstellen möchten, müssen Sie eine Verbindung zum Netzwerk herstellen. Sie können 1) ein externes Netzwerk in einer anderen Compose-Datei angeben oder das Netzwerk mit dem Parameter --attachable erstellen (Docker-Netzwerk create -d overlay My-Network --attachable). Andernfalls müssen Sie den Port wie folgt veröffentlichen:
ports:
- 80:80
Docker Compose unterstützt die Taste deploy
nicht . Dies wird nur beachtet, wenn Sie Ihre YAML-Datei der Version 3 in einem Docker-Stapel verwenden.
Diese Meldung wird gedruckt, wenn Sie der Datei docker-compose.yml
Den Schlüssel deploy
hinzufügen und dann docker-compose up -d
Ausführen.
WARNUNG: Einige Dienste (Datenbanken) verwenden den Bereitstellungsschlüssel, der ignoriert wird. Compose unterstützt keine 'Deployment'-Konfiguration. Verwenden Sie
docker stack deploy
, Um die Implementierung in einem Schwarm durchzuführen.
In der Dokumentation ( https://docs.docker.com/compose/compose-file/#deploy ) heißt es:
Geben Sie die Konfiguration für die Bereitstellung und Ausführung von Diensten an. Dies wirkt sich nur bei der Bereitstellung in einem Schwarm mit Docker-Stack-Bereitstellung aus und wird bei der Ausführung von Docker-Compose-Up und Docker-Compose ignoriert.
Ich weiß, dass das Thema ein bisschen alt und veraltet ist, aber ich konnte trotzdem die folgenden Optionen verwenden:
deploy:
resources:
limits:
cpus: '0.001'
memory: 50M
bei Verwendung der Version 3.7 von Docker-Compose
Was in meinem Fall geholfen hat, war die Verwendung dieses Befehls:
docker-compose --compatibility up
--compatibility
flag steht für (aus der Dokumentation entnommen):
If set, Compose will attempt to convert deploy keys in v3 files to their non-Swarm equivalent
Ich finde es großartig, dass ich meine Docker-Compose-Datei nicht auf v2 zurücksetzen muss.