Containerisieren Sie Ihre Rust-Anwendungen mit Docker, um die Bereitstellung zu vereinfachen und Konsistenz in verschiedenen Umgebungen sicherzustellen.
Die Containerisierung bietet wesentliche Vorteile in Bezug auf Portabilität, Isolation und Effizienz. Es ermöglicht die konsistente Bereitstellung von Anwendungen in verschiedenen Umgebungen und gewährleistet Sicherheit und Stabilität durch Anwendungsisolation. Darüber hinaus wird die Ressourcennutzung optimiert, Entwicklungs- und Verwaltungsprozesse vereinfacht und die Skalierbarkeit verbessert.
Die Containerisierung von Rust-Apps mit Docker bietet eine zuverlässige und effiziente Möglichkeit, Anwendungen und ihre Abhängigkeiten in eigenständige und portable Umgebungen zu packen. Es ermöglicht eine nahtlose Ausführung über verschiedene Systeme hinweg, ohne Rücksicht auf die zugrunde liegende Infrastruktur.
Einrichten eines einfachen Webservers in Rust mit Actix
Du kannst Richten Sie einen einfachen Webserver in Rust ein mit Actix und Containerisieren Sie Ihre App mit Docker. Sie legen einen Port offen, über den Sie für Anfragen auf den Server zugreifen.
Führen Sie diesen Befehl aus, um ein neues Rust-Projekt mit zu erstellen Frachtpaketmanager:
Cargo neue My-App
Wenn Sie ein neues Rust-Projekt erstellen, fügt Cargo das hinzu fracht.toml Datei in das Stammverzeichnis Ihres Projekts. Öffne das fracht.toml Datei und fügen Sie die Actix-Kiste hinzu Abhängigkeiten Abschnitt wie folgt:
[Abhängigkeiten]
actix-web = "4.3.1"
So können Sie mit der Actix-Kiste einen einfachen Server in Rust einrichten:
verwenden actix_web::{get, App, HttpResponse, HttpServer, Responder};
// Erforderliche Abhängigkeiten vom Actix Web Framework importieren
#[erhalten("/")]
asynchronfnHallo() -> Impl Antwortender {
// Definieren Sie eine Handlerfunktion für GET-Anfragen an den Root-Pfad ("/")
// Die Funktion gibt einen Typ zurück, der das Responder-Merkmal implementiertHttpResponse::OK().Körper("Hallo Welt!")
// Eine HTTP-Antwort mit dem Statuscode 200 (OK) zurückgeben
// und ein Antworttext von „Hello, World!“
}#[actix_web:: main]
asynchronfnhauptsächlich() -> std:: io::Ergebnis {
// Einstiegspunkt der AnwendungHttpServer:: new(|| {
// Eine neue Instanz des HttpServers erstellenApp:: new().service (Hallo)
// Erstellen Sie eine neue Instanz der App und registrieren Sie die Hallo-Funktion
}).binden("127.0.0.1:8080")?.laufen().erwarten
// Binden Sie den Server an die IP-Adresse und den Port
// Starten Sie den Server und warten Sie auf seine Fertigstellung
}
Das Programm richtet mit Actix einen einfachen HTTP-Webserver ein. Der Hallo Die Funktion ist eine Handlerfunktion, die auf GET-Anfragen am Port reagiert 8080 mit „Hallo Welt!“
Der hauptsächlich Die Funktion richtet eine Serverinstanz mit dem ein HttpServer:: neu Funktion und bindet den Server an die Ausführung auf der Localhost-Adresse 127.0.0.1:8080.
Führen Sie nun die aus Frachtfahrt Befehl zum Ausführen des Webservers. Hier ist das Ergebnis des Öffnens der Adresse in einem Webbrowser.
Schreiben einer Docker-Datei für Ihre Rust-App
Um Ihre Rust-App mit Docker zu containerisieren, müssen Sie eine erstellen Docker-Datei und definieren Sie die Befehle für den Containerisierungsprozess.
Der Docker-Datei hat keine Erweiterung; Sie müssen nur eine erstellen Docker-Datei Datei. Sie können auch eine erstellen .dockerignore Datei, um Dateien in Ihrem Arbeitsverzeichnis aus Ihrem Build-Prozess zu abstrahieren.
Definieren von Befehlen in Ihrer Docker-Datei
Dein Docker-Datei enthält Befehle, die ein Basis-Image aus dem Docker-Repository abrufen, das Arbeitsverzeichnis festlegen und kopieren Dateien erstellen, Abhängigkeiten erstellen, die Anwendung erstellen, ein minimales Image erstellen, den Port exportieren und ausführen Anwendung.
# Verwenden Sie die neueste Version des Rust-Basisimages
AUS Rost: spätestens# Setzen Sie das Arbeitsverzeichnis im Container auf /my
ARBEITSVERZEICHNIS /usr/src/my-app# Kopieren Sie die Rust-Projektdateien in das Arbeitsverzeichnis
KOPIEREN. .# Erstellen Sie die Rust-App
LAUFEN Frachtbau
# Legen Sie den Befehl fest, um die Rust-App auszuführen
CMD Frachtfahrt
Nachdem Sie die erforderlichen Befehle zum Containerisieren Ihrer App definiert haben, können Sie mit diesem Befehl einen Container erstellen:
docker build -t meine-app .
Der Befehl erstellt ein Docker-Image für Sie meine App App mit dem Tag meine App aus dem aktuellen Verzeichnis.
Du kannst den... benutzen Docker-Lauf Befehl zum Ausführen Ihres Docker-Images.
docker run -p 8080:8080 meine-app
Der -p 8080:8080 Die Option ordnet den Port 8080 des Hostcomputers dem Port 8080 des Containers zu. Docker leitet den an Port 8080 auf dem Host-Computer geleiteten Datenverkehr an Port 8080 im Container weiter.
Sie können über den Localhost-Port 8080 Anfragen an den Container senden, um den Webserver aufzurufen.
Docker Compose ermöglicht die Multi-Container-Orchestrierung
Die Arbeit mit mehreren Containern ist eine häufige Aufgabe beim Erstellen anspruchsvoller Docker-Anwendungen. Sie können Docker Compose verwenden, um mit mehreren Docker-Containern zu arbeiten.
Docker Compose bietet Funktionen zum Definieren der Dienste, aus denen Ihre App besteht, zum Festlegen der Abhängigkeiten zwischen Diensten. Definieren der Umgebungsvariablen für jeden Dienst, Starten, Stoppen, Neustarten, Skalieren der Container Ihrer Anwendung und anderes Funktionalitäten.