In diesem Artikel wird beschrieben, wie man die Docker
im Gesang antworten Docker Compose
Bereitstellung, Aktualisierung und Migration von Open-Source-Plattformen zur Entwicklung von LLM-Anwendungen Dify
(v0.6.14). Der Inhalt deckt fortgeschrittene Vorgänge ab, von der schnellen Bereitstellung über die Datensicherung bis hin zur Erstellung von Abbildern aus dem Quellcode, mit dem Ziel, einen klaren und praktischen Leitfaden für Entwickler und O&M-Personal zu bieten.
Schnelle Bereitstellung von Dify mit Docker Compose
Für die meisten Benutzer ist die Verwendung der offiziell bereitgestellten Docker Compose
Die Dokumentation wird bereitgestellt Dify
Der schnellste und empfehlenswerteste Weg.
Schritt 1: Beschaffung der Dify-Bereitstellungsdatei
Erstens, von Dify
Holen Sie sich das offizielle Repository der docker
Katalog für den Einsatz.
Schritt 2: Umgebungsvariablen konfigurieren
Dify
aller Konfigurationen werden über Umgebungsvariablen verwaltet. Vor der Bereitstellung wird die Konfigurationsvorlagendatei .env.example
vervielfältigen .env
Dokument und passen Sie es dann an Ihre tatsächlichen Bedürfnisse an.
# 进入 docker 部署目录
cd dify/docker
# 复制环境变量配置文件
cp .env.example .env
Anschließend können Sie mit einem Texteditor die Datei .env
ändern Sie das Datenbankpasswort entsprechend den Kommentaren in der Datei,SECRET_KEY
und andere wichtige Konfigurationen.
Schritt 3: Starten Sie den Dienst
Nach Abschluss der Konfiguration führen Sie den folgenden Befehl aus, um im Hintergrund zu starten Dify
aller Dienstleistungen.
docker-compose up -d
Dieser Befehl zieht automatisch die erforderlichen Docker
Image und starten Sie alle Container der Reihe nach.
Dify Dienste aktualisieren
(coll.) durchfallen (ein Schüler) Dify
Wenn Sie eine neue Version veröffentlichen, können Sie die folgenden Schritte ausführen, um ein Sicherheitsupdate durchzuführen.
- Alte Container anhalten und entfernen:
cd dify/docker docker-compose down
- Daten sichern (wichtig):
Es wird dringend empfohlen, vor der Durchführung von Aktualisierungen ein Backup zu erstellen.docker
Katalog, insbesondere derjenige, in dem dievolumes
Unterverzeichnisse. Dies ist der Schlüssel zur Gewährleistung der Datensicherheit. - Abrufen der neuen Version des Dokuments:
Laden Sie die neueste Version vonDify
Quellcode, unter Verwendung des neuendocker
Der Katalog ersetzt den alten Katalog. - Importieren einer neuen Version des Bildes:
Wenn Sie sich in einer Offline-Umgebung befinden, müssen Sie die neue Version der Bilddatei im Voraus importieren. - Aktualisieren von Konfigurationsdateien:
Vergleichen Sie das Alte mit dem Neuen.env
Datei, um die benutzerdefinierte Konfiguration auf die neue.env
Dokumentation. - Einführung der neuen Version des Dienstes:
docker-compose up -d
Datenmigration und -sicherung
Datenmigration ist eine häufige Anforderung in Betrieb und Wartung.Dify
Für die Datenpersistenz gibt es zwei Ansätze: die lokale Verzeichniszuordnung und die Docker
Benennen Sie die Datenvolumes, damit sie unterschiedlich migriert werden.
Migrieren Sie Volume-Verzeichnisse, die lokal abgebildet sind
Dify
(in Form eines Nominalausdrucks) docker-compose.yaml
In der Dokumentation heißt es, dass einige Dienste Daten durch "lokale Verzeichniszuordnung" aufrechterhalten. Das bedeutet, dass ein Verzeichnis im Container direkt mit einem Verzeichnis im Host ./volumes
Katalog.
Die Migration auf diese Weise ist sehr einfach und besteht im Wesentlichen aus dem Kopieren von Dateien.
- Dify-Dienst beenden
Alle Container müssen vor der Bearbeitung der Datei angehalten werden, um Konflikte beim Schreiben von Daten zu vermeiden.docker-compose down
- Katalog der verpackten Bände
Oberbefehlshaber (Militär)volumes
Verzeichnis ist in eine Zip-Datei gepackt.tar -czvf dify-volumes.tar.gz ./volumes
- Entpacken auf neuem Server
Nachdem Sie die ZIP-Datei auf den neuen Server übertragen haben, entpacken Sie sie.tar -xzvf dify-volumes.tar.gz
Migration von Docker benannten Datenvolumina
in Bezug auf PostgreSQL
und andere wichtige Dienstleistungen.Dify
angenommen Docker
Die Daten werden in einem "benannten Datenvolumen" aufbewahrt. Ein solcher Datenträger besteht aus Docker
Einheitliche Verwaltung, deren physische Dateien in der /var/lib/docker/volumes/
Verzeichnis ist das direkte Kopieren relativ umständlich und kann zu Problemen mit den Berechtigungen führen.
laut oradata
im Gesang antworten dify_es01_data
Diese beiden Datenvolumina werden als Beispiel verwendet, und die folgende Methode wird für die Migration empfohlen.
Anweisungen:: Bei Einsatz mit docker-compose -p dify
Geben Sie den Namen des Projekts an.Docker
Dem Volume-Namen wird automatisch ein Präfix vorangestellt, z. B. dify_oradata
.
Methode 1: Sicherung und Wiederherstellung mit temporären Containern (empfohlen)
Bei dieser Methode ist es nicht erforderlich root
Es handelt sich um eine sichere und standardisierte Praxis, bei der der physische Pfad des Datenträgers auf dem Host nicht beachtet werden muss.
- Sicherung von Datenvolumes
Erstellen Sie eine temporärealpine
Container, mounten Sie sowohl das zu sichernde Datenvolumen als auch ein lokales Sicherungsverzeichnis und führen Sie dann den Pack-Befehl innerhalb des Containers aus.# 确保当前目录下有 backup 子目录 mkdir -p backup # 备份 oradata 数据卷 docker run --rm -v oradata:/source -v $(pwd)/backup:/backup alpine sh -c "cd /source && tar czf /backup/oradata.tar.gz ." # 备份 dify_es01_data 数据卷 docker run --rm -v dify_es01_data:/source -v $(pwd)/backup:/backup alpine sh -c "cd /source && tar czf /backup/es_data.tar.gz ."
- Übertragen von Sicherungsdateien
Oberbefehlshaber (Militär)backup
Verzeichnis desoradata.tar.gz
im Gesang antwortenes_data.tar.gz
Dateiübertragung auf den neuen Server. - Wiederherstellung von Daten auf einem neuen Server
Erstellen Sie zunächst ein Data-Volume mit dem gleichen Namen auf dem neuen Server und stellen Sie dann die Daten auf ähnliche Weise wieder her.# 在新服务器上创建空的命名数据卷 docker volume create oradata docker volume create dify_es01_data # 从备份文件恢复数据到 oradata 卷 docker run --rm -v oradata:/target -v /path/to/backup:/backup alpine sh -c "cd /target && tar xzf /backup/oradata.tar.gz" # 从备份文件恢复数据到 dify_es01_data 卷 docker run --rm -v dify_es01_data:/target -v /path/to/backup:/backup alpine sh -c "cd /target && tar xzf /backup/es_data.tar.gz"
Methode 2: Direktes Manipulieren des Host-Volume-Verzeichnisses (erfordert root-Rechte)
Wenn der Server, dem die Datei root
Berechtigungen haben, können Sie auch das physische Verzeichnis des Volumes direkt sichern.
- Suche nach dem physischen Pfad zu einem Volume
docker volume inspect oradata dify_es01_data
Dieser Befehl gibt den Namen des Datenträgers
Mountpoint
d.h. der physische Speicherpfad. - Direkte Verpackung
# 获取路径并打包 ORADATA_PATH=$(docker volume inspect -f '{{.Mountpoint}}' oradata) ES_DATA_PATH=$(docker volume inspect -f '{{.Mountpoint}}' dify_es01_data) sudo tar -czf oradata_backup.tar.gz -C $ORADATA_PATH . sudo tar -czf es_data_backup.tar.gz -C $ES_DATA_PATH .
Erweiterte Operationen: Erstellen und Verwalten von Bildern aus der Quelle
In Szenarien, in denen eine sekundäre Entwicklung erforderlich ist, Sicherheits-Patches angewendet oder Offline-Bereitstellungen vorgenommen werden, sind manuelle Builds vom Quellcode erforderlich. Dify
(in Form eines Nominalausdrucks) Docker
Spiegeln.
Aufbau von APIs und Web Mirrors
Dify
Die Kerndienste sind unterteilt in api
im Gesang antworten web
Zwei Teile, die separat gebaut werden müssen.
- Erstellen Sie das API-Image (
dify/dify-api
)cd api && docker build . -t dify/dify-api:0.6.14
- Erstellen Sie ein Web-Image (
dify/dify-web
)cd web && docker build . -t dify/dify-web:0.6.14
Exportieren und Importieren von Bildern (für Offline-Umgebungen)
Nachdem ein Bild erstellt oder gezogen wurde, kann es als .tar
Datei für den Import zur Verwendung auf Servern, die keinen Zugang zum externen Netz haben.
- Spiegel exportieren
ausnutzendocker save
um ein oder mehrere Bilder zu verpacken.# 导出 Dify 核心镜像 docker save -o dify_dify_api_0.6.14.tar dify/dify-api:0.6.14 docker save -o dify_dify_web_0.6.14.tar dify/dify-web:0.6.14 # 导出其它依赖镜像 docker save -o postgres_15_alpine.tar postgres:15-alpine docker save -o redis_6_alpine.tar redis:6-alpine
- Bilder importieren
Verwenden Sie auf dem neuen Server diedocker load
Befehl von.tar
Datei, um das Bild zu laden.docker load -i dify_dify_api_0.6.14.tar docker load -i dify_dify_web_0.6.14.tar docker load -i postgres_15_alpine.tar docker load -i redis_6_alpine.tar
Analyse von Kernkonzepten
Das Verständnis der folgenden Schlüsselkonzepte hilft bei der besseren Wartung und Nutzung der Dify
.
docker
zusammen mit docker-legacy
Verzeichnis (auf der Festplatte des Computers)
existieren Dify
Im Quellcode gibt es zwei Verzeichnisse für die Bereitstellung.docker-legacy
ist die alte Einsatzmethode, und die docker
Der Katalog ist die derzeit empfohlene und übersichtlichere Bereitstellungsoption. Neue Benutzer sollten sich immer für die docker
Katalog.
SECRET_KEY
Rolle der
existieren dify-api
gewartet .env
Konfigurationsdatei.SECRET_KEY
ist eine wichtige Sicherheitskonfiguration. Es handelt sich um eine lange zufällige Zeichenfolge, die zur Verschlüsselung und Ausgabe der Sitzung eines Benutzers verwendet wird cookie
die verhindert, dass die Sitzung manipuliert werden kann. Stellen Sie sicher, dass Sie einen komplexen Wert wählen, den niemand erraten kann.
Zum Zeitpunkt der Erstellung ignoriert storage
Verzeichnis (auf der Festplatte des Computers)
Dify
(in Form eines Nominalausdrucks) Dockerfile
Wenn das Bild erstellt ist, wird es durch den .dockerignore
Dokumentation ausdrücklich ignoriert storage
Katalog. Der Grund dafür ist storage
Verzeichnis wird verwendet, um vom Mieter hochgeladene Dateien, Schlüsselpaare und andere sensible oder private Informationen zu speichern, die nicht in ein allgemeines Docker
im Image und sollte stattdessen zur Laufzeit dynamisch über ein Datenvolumen eingebunden werden.
zerlegen. docker run --rm
Befehl Backup
Die empfohlene Backup-Befehlsvorlage im Abschnitt Datenmigration hat für die einzelnen Parameter die folgenden Bedeutungen:
docker run --rm -v <volume_to_backup>:/source -v <host_backup_dir>:/backup <image> sh -c "<commands>"
Baugruppen | Bedeutung und Verwendung |
---|---|
docker run |
Starten Sie einen neuen Container. |
--rm |
Container werden nach der Ausführung automatisch gelöscht, was ideal ist, um einmalige Aufgaben auszuführen und zu vermeiden, dass nutzlose temporäre Container zurückbleiben. |
-v :/source |
Sichern Sie die Docker Das Datenvolumen wird in den Container innerhalb des /source Katalog. |
-v :/backup |
Hängen Sie das Verzeichnis auf dem Host-Rechner, das zum Speichern der Sicherungsdateien verwendet wird, in das Verzeichnis /backup Katalog. |
“ | Geben Sie ein leichtgewichtiges Basisbild an, wie z. B. alpine Es hat einen eingebauten tar und andere gängige Werkzeuge. |
sh -c "..." |
innerhalb des Containers ausgeführt shell Befehl. Zum Beispiel cd /source && tar czf /backup/backup.tar.gz . Zeigt an, dass Sie in das Quelldatenverzeichnis gehen und dann den gesamten Inhalt in das Sicherungsverzeichnis packen. |