Containerisera dina Rust-applikationer med Docker för att förenkla driftsättningen och säkerställa konsekvens i olika miljöer.

Containerisering erbjuder viktiga fördelar när det gäller portabilitet, isolering och effektivitet. Det möjliggör konsekvent distribution av applikationer i olika miljöer och säkerställer säkerhet och stabilitet genom applikationsisolering. Det optimerar också resursutnyttjandet, förenklar utvecklings- och förvaltningsprocesser och förbättrar skalbarheten.

Containerizing Rust-appar med Docker ger ett pålitligt och effektivt sätt att paketera applikationer och deras beroenden i fristående och bärbara miljöer. Det möjliggör sömlöst exekvering över olika system utan att ta hänsyn till den underliggande infrastrukturen.

Konfigurera en enkel webbserver i Rust med Actix

Du kan ställ in en enkel webbserver i Rust med Actix och containerisera din app med Docker. Du kommer att exponera en port där du kommer åt servern för förfrågningar.

Kör det här kommandot för att skapa ett nytt Rust-projekt med Lastpakethanterare:

instagram viewer
last ny min-app

När du skapar ett nytt Rust-projekt lägger Cargo till cargo.toml filen till rotkatalogen för ditt projekt. Öppna cargo.toml fil och lägg till Actix-lådan i beroenden avsnitt så här:

[beroenden]
actix-webb = "4.3.1"

Så här kan du ställa in en enkel server i Rust med Actix-lådan:

använda sig av actix_web::{get, App, HttpResponse, HttpServer, Responder};

// Importera nödvändiga beroenden från Actix webbramverk

#[skaffa sig("/")]
asynkronfnHallå() -> impl Svara {
// Definiera en hanterarfunktion för GET-förfrågningar till rotsökvägen ("/")
// Funktionen returnerar en typ som implementerar Responder-egenskapen

HttpResponse::Ok().kropp("Hej världen!")
// Returnera ett HTTP-svar med en statuskod på 200 (OK)
// och en svarstext av "Hello, World!"
}

#[actix_web:: main]
asynkronfnhuvud() -> std:: io::Resultat {
// Ingångspunkt för applikationen

HttpServer:: new(|| {
// Skapa en ny instans av HttpServer

App:: new().service (hej)
// Skapa en ny instans av appen och registrera hej-funktionen

}).binda("127.0.0.1:8080")?.springa().vänta
// Bind servern till IP-adressen och porten
// Starta servern och vänta på att den är klar
}

Programmet ställer in en grundläggande HTTP-webbserver med Actix. De Hallå funktion är en hanterarfunktion som svarar på GET-förfrågningar på port 8080 med "Hej världen!".

De huvud funktionen ställer in en serverinstans med HttpServer:: ny funktion och binder servern att köras på localhost-adress 127.0.0.1:8080.

Utför nu lastkörning kommando för att köra webbservern. Här är resultatet av att öppna adressen i en webbläsare.

Att skriva en dockerfil för din Rust-app

För att behålla din Rust-app med Docker måste du skapa en Dockerfil och definiera kommandona för containeriseringsprocessen.

De Dockerfil har ingen förlängning; du behöver bara skapa en Dockerfil fil. Du kan också skapa en .dockerignore fil för att abstrakta filer i din arbetskatalog från din byggprocess.

Definiera kommandon i din dockerfil

Din Dockerfil kommer att innehålla kommandon som hämtar en basbild från Docker-förvaret, ställer in arbetskatalogen, kopierar filer, bygg beroenden, bygg applikationen, skapa en minimal bild, exportera porten och kör Ansökan.

# Använd den senaste versionen av Rust-basbilden
FRÅN rost: senaste

# Ställ in arbetskatalogen i behållaren till /my
WORKDIR /usr/src/my-app

# Kopiera Rust-projektfilerna till arbetskatalogen
KOPIERA. .

# Bygg Rust-appen
SPRINGA lastbygge

# Ställ in kommandot för att köra Rust-appen
CMD lastkörning

Efter att ha definierat de nödvändiga kommandona för containerisering av din app, kan du bygga en container med det här kommandot:

docker build -t my-app .

Kommandot bygger en Docker-bild för din min-app app med taggen min-app från den aktuella katalogen.

Du kan använda hamnarkörning kommandot för att köra din Docker-avbildning.

docker run -p 8080:8080 min-app

De -p 8080:8080 alternativet mappar värddatorns port 8080 till containerns port 8080. Docker kommer att vidarebefordra trafiken till port 8080 på värddatorn till port 8080 i behållaren.

Du kan skicka förfrågningar till behållaren via localhost-port 8080 för att anropa webbservern.

Docker Compose möjliggör orkestrering av flera behållare

Att arbeta med flera behållare är en vanlig uppgift när man bygger sofistikerade Docker-applikationer. Du kan använda Docker Compose för att arbeta med flera Docker-behållare.

Docker Compose tillhandahåller funktionalitet för att definiera tjänsterna som utgör din app, specificera beroenden mellan tjänster, definiera miljövariablerna för varje tjänst, starta, stoppa, starta om, skala din applikations behållare och annat funktioner.