Kontejnerizirajte svoje Rust aplikacije s Dockerom kako biste pojednostavili implementaciju i osigurali dosljednost u različitim okruženjima.

Kontejnerizacija nudi bitne prednosti u pogledu prenosivosti, izolacije i učinkovitosti. Omogućuje dosljednu implementaciju aplikacija u različitim okruženjima i osigurava sigurnost i stabilnost kroz izolaciju aplikacija. Također optimizira korištenje resursa, pojednostavljuje procese razvoja i upravljanja te poboljšava skalabilnost.

Kontejneriranje Rust aplikacija s Dockerom pruža pouzdan i učinkovit način pakiranja aplikacija i njihovih ovisnosti u samostalna i prijenosna okruženja. Omogućuje besprijekorno izvođenje u različitim sustavima bez brige za temeljnu infrastrukturu.

Postavljanje jednostavnog web poslužitelja u Rustu s Actixom

Možeš postaviti jednostavan web poslužitelj u Rustu s Actixom i kontejnerizirajte svoju aplikaciju s Dockerom. Izložit ćete port s kojeg ćete pristupiti poslužitelju za zahtjeve.

Pokrenite ovu naredbu za stvaranje novog Rust projekta s Upravitelj paketa tereta:

instagram viewer
cargo nova moja aplikacija

Kada kreirate novi Rust projekt, Cargo dodaje teret.toml datoteku u korijenski direktorij vašeg projekta. Otvori teret.toml datoteku i dodajte Actix sanduk u ovisnosti odjeljak ovako:

[ovisnosti]
actix-web = "4.3.1"

Evo kako možete postaviti jednostavan poslužitelj u Rustu s Actix sandukom:

koristiti actix_web::{get, App, HttpResponse, HttpServer, Responder};

// Uvoz potrebnih ovisnosti iz Actix Web okvira

#[dobiti("/")]
asinkronifnzdravo() -> impl Odgovarač {
// Definirajte funkciju rukovatelja za GET zahtjeve do korijenske staze ("/")
// Funkcija vraća tip koji implementira značajku Responder

HttpResponse::U redu().tijelo("Pozdrav svijete!")
// Vrati HTTP odgovor sa statusnim kodom 200 (OK)
// i tijelo odgovora "Hello, World!"
}

#[actix_web:: main]
asinkronifnglavni() -> std:: io::Proizlaziti {
// Ulazna točka aplikacije

HttpServer:: new(|| {
// Kreirajte novu instancu HttpServera

App:: new().service (zdravo)
// Stvorite novu instancu aplikacije i registrirajte funkciju hello

}).vezati("127.0.0.1:8080")?.trčanje().čekati
// Povežite poslužitelj s IP adresom i portom
// Pokrenite poslužitelj i pričekajte njegov završetak
}

Program postavlja osnovni HTTP web poslužitelj s Actixom. The zdravo funkcija je funkcija rukovatelja koja odgovara na GET zahtjeve na portu 8080 uz "Hello, World!".

The glavni funkcija postavlja instancu poslužitelja s HttpServer:: novo funkciju i veže poslužitelj za rad na adresi lokalnog hosta 127.0.0.1:8080.

Sada izvršite vožnja tereta naredba za pokretanje web poslužitelja. Evo rezultata otvaranja adrese u web pregledniku.

Pisanje Docker datoteke za vašu Rust aplikaciju

Za kontejneriziranje vaše Rust aplikacije s Dockerom, morate stvoriti Dockerfile te definirati naredbe za proces kontejnerizacije.

The Dockerfile nema nastavak; trebate samo stvoriti a Dockerfile datoteka. Također možete stvoriti a .dockerignore datoteku za apstrahiranje datoteka u vašem radnom direktoriju iz vašeg procesa izgradnje.

Definiranje naredbi u vašoj Docker datoteci

Vaš Dockerfile će sadržavati naredbe koje povlače osnovnu sliku iz Docker repozitorija, postavljaju radni direktorij, kopiraju datoteke, izgraditi ovisnosti, izgraditi aplikaciju, stvoriti minimalnu sliku, izvesti priključak i pokrenuti primjena.

# Koristite najnoviju verziju Rust osnovne slike
IZ hrđa: najnoviji

# Postavite radni direktorij u spremniku na /my
RADNI DIR /usr/src/my-app

# Kopirajte Rust projektne datoteke u radni direktorij
KOPIRATI. .

# Izradite aplikaciju Rust
TRČANJE teretna izgradnja

# Postavite naredbu za pokretanje aplikacije Rust
CMD vožnja tereta

Nakon definiranja potrebnih naredbi za kontejneriziranje vaše aplikacije, možete izgraditi spremnik pomoću ove naredbe:

docker build -t my-app.

Naredba gradi Docker sliku za vaš moja-aplikacija aplikacija s oznakom moja-aplikacija iz trenutnog imenika.

Možete koristiti docker run naredba za pokretanje vaše Docker slike.

docker run -p 8080:8080 moja aplikacija

The -p 8080:8080 opcija preslikava port 8080 glavnog računala u port 8080 spremnika. Docker će proslijediti promet usmjeren na priključak 8080 na glavnom računalu na priključak 8080 u spremniku.

Možete slati zahtjeve spremniku preko porta localhost 8080 za pozivanje web poslužitelja.

Docker Compose omogućuje orkestraciju više spremnika

Rad s više spremnika čest je zadatak pri izradi sofisticiranih Docker aplikacija. Docker Compose možete koristiti za rad s više Docker spremnika.

Docker Compose pruža funkcionalnost za definiranje usluga koje čine vašu aplikaciju, određivanje ovisnosti između usluga, definiranje varijabli okruženja za svaku uslugu, pokretanje, zaustavljanje, ponovno pokretanje, skaliranje spremnika vaše aplikacije i drugo funkcionalnosti.