Ich bin Docker für eine Produktion PHP-FPM/Nginx-Anwendung ausgeführt, ich möchte Docker-stack.yml verwenden und zu einem Schwarm-Cluster bereitstellen. Hier ist meine Datei:Docker-Stack Bereitstellung Rolling Updates Volume-Problem
version: "3"
services:
app:
image: <MYREGISTRY>/app
volumes:
- app-data:/var/www/app
deploy:
mode: global
php:
image: <MYREGISTRY>/php
volumes:
- app-data:/var/www/app
deploy:
replicas: 2
nginx:
image: <MYREGISTRY>/nginx
depends_on:
- php
volumes:
- app-data:/var/www/app
deploy:
replicas: 2
ports:
- "80:80"
volumes:
app-data:
Mein Code ist in app
Behälter mit Bild von meiner Registrierung.
Ich möchte meinen Code mit docker service update --image <MYREGISTRY>/app:latest
aktualisieren, aber es funktioniert nicht, der Code wird nicht geändert. Ich denke, es verwendet stattdessen das lokale Volume app-data
.
Ist es normal, dass die neuen Containerdaten die Volumendaten nicht überschreiben?
Vielen Dank für Ihre Antwort, in der Tat denke ich, dass es nicht in einem Volumen sein sollte, aber wie kann ich den Code von 'app' zu' php' und 'nginx' ohne ein Volumen teilen? Ich dachte auch an das Verfahren, um das Volume zu aktualisieren, ich denke, das ist meine beste Option für jetzt –
Ich bin ein wenig verwirrt, warum Sie einen Nginx und einen PHP-Container haben und welchen Zweck der App-Container bietet außer Ihrem Volumen. Scheint, als sollte es zu einem einzelnen Behälter vereinfacht werden, der nicht einmal ein Volumen benötigen würde. – BMitch
Sie haben Recht, der einzige Zweck des App-Containers ist es, den Code zu haben und Volumen bereitzustellen. Ein einzelner Container für alle ist schwieriger zu aktualisieren (Wenn ich nur den Code zum Beispiel aktualisieren möchte) und ich denke, es ist besser, nur Bild zu versionieren. –