برنامه های Rust خود را با Docker محفظه کنید تا استقرار را ساده کنید و از ثبات در محیط های مختلف اطمینان حاصل کنید.
کانتینرسازی مزایای اساسی از نظر قابلیت حمل، جداسازی و کارایی دارد. این امکان استقرار مداوم برنامه ها را در محیط های مختلف فراهم می کند و امنیت و ثبات را از طریق جداسازی برنامه تضمین می کند. همچنین استفاده از منابع را بهینه می کند، فرآیندهای توسعه و مدیریت را ساده می کند و مقیاس پذیری را افزایش می دهد.
کانتینر کردن برنامههای Rust با Docker ابزاری مطمئن و کارآمد برای بستهبندی برنامهها و وابستگیهای آنها به محیطهای مستقل و قابل حمل فراهم میکند. این امکان اجرای یکپارچه در سیستم های مختلف را بدون نگرانی برای زیرساخت های اساسی فراهم می کند.
راه اندازی یک وب سرور ساده در Rust با Actix
می توانید یک وب سرور ساده در Rust با Actix راه اندازی کنید و برنامه خود را با Docker محفظه کنید. شما یک پورت را در معرض دید قرار خواهید داد که از آنجا به سرور برای درخواست دسترسی خواهید داشت.
این دستور را برای ایجاد یک پروژه Rust جدید با مدیر بسته Cargo اجرا کنید:
cargo new my-app
هنگامی که یک پروژه Rust جدید ایجاد می کنید، Cargo فایل cargo.toml را به فهرست اصلی پروژه شما اضافه می کند. فایل cargo.toml را باز کنید و جعبه Actix را به این صورت به بخش وابستگی ها اضافه کنید:
[dependencies]
actix-web = "4.3.1"
در اینجا نحوه راه اندازی یک سرور ساده در Rust با جعبه Actix آورده شده است:
use actix_web::{get, App, HttpResponse, HttpServer, Responder};
// Import necessary dependencies from Actix Web framework
#[get("/")]
async fn hello() -> impl Responder {
// Define a handler function for GET requests to the root path ("/")
// The function returns a type that implements the Responder trait
HttpResponse::Ok().body("Hello, World!")
// Return an HTTP response with a status code of 200 (OK)
// and a response body of "Hello, World!"
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
// Entry point of the application
HttpServer::new(|| {
// Create a new instance of the HttpServer
App::new().service(hello)
// Create a new instance of the App and register the hello function
}).bind("127.0.0.1:8080")?.run().await
// Bind the server to the IP address and port
// Start the server and await its completion
}
این برنامه یک وب سرور اصلی HTTP را با Actix راه اندازی می کند. تابع hello یک تابع کنترل کننده است که به درخواست های GET در پورت 8080 با “Hello, World!” پاسخ می دهد.
تابع اصلی یک نمونه سرور را با تابع HttpServer::new تنظیم می کند و سرور را به اجرای آدرس لوکال هاست 127.0.0.1:8080 متصل می کند.
اکنون دستور cargo run را برای اجرای وب سرور اجرا کنید. در اینجا نتیجه باز کردن آدرس در یک مرورگر وب است.
نوشتن یک Dockerfile برای برنامه Rust شما
برای اینکه برنامه Rust خود را با Docker محفظه کنید، باید یک Dockerfile ایجاد کنید و دستورات را برای فرآیند کانتینری سازی تعریف کنید.
Dockerfile پسوندی ندارد. شما فقط باید یک فایل Dockerfile ایجاد کنید. همچنین میتوانید یک فایل .dockerignore ایجاد کنید تا فایلهای موجود در فهرست کاری خود را از فرآیند ساخت خود انتزاع کنید.
تعریف دستورات در Dockerfile
Dockerfile شما حاوی دستوراتی است که یک تصویر پایه را از مخزن داکر میکشد، دایرکتوری کاری را تنظیم میکند، فایلها را کپی میکند، وابستگیها را ایجاد میکند، برنامه را میسازد، یک تصویر حداقلی ایجاد میکند، پورت را صادر میکند و برنامه را اجرا میکند.
# Use the latest version of the Rust base image
FROM rust:latest
# Set the working directory in the container to /my
WORKDIR /usr/src/my-app
# Copy the Rust project files to the working directory
COPY . .
# Build the Rust app
RUN cargo build
# Set the command to run the Rust app
CMD cargo run
پس از تعریف دستورات مورد نیاز برای کانتینری کردن برنامه خود، می توانید با این دستور یک کانتینر بسازید:
docker build -t my-app .
دستور یک تصویر Docker برای برنامه my-app شما با تگ my-app از دایرکتوری فعلی ایجاد می کند.
می توانید از دستور docker run برای اجرای تصویر Docker خود استفاده کنید.
docker run -p 8080:8080 my-app
گزینه -p 8080:8080 پورت 8080 دستگاه میزبان را به درگاه 8080 کانتینر نگاشت می کند. داکر ترافیک هدایت شده به پورت 8080 دستگاه میزبان را به پورت 8080 در کانتینر ارسال می کند.
می توانید از طریق پورت لوکال هاست 8080 درخواست هایی را برای تماس با سرور وب به کانتینر ارسال کنید.
Docker Compose ارکستراسیون چند کانتینری را فعال می کند
کار با چندین کانتینر یک کار رایج هنگام ساخت برنامه های کاربردی Docker پیچیده است. می توانید از Docker Compose برای کار با چندین کانتینر Docker استفاده کنید.
Docker Compose عملکردی را برای تعریف سرویسهایی که برنامه شما را تشکیل میدهند، تعیین وابستگیهای بین سرویسها، تعریف متغیرهای محیطی برای هر سرویس، شروع، توقف، راهاندازی مجدد، مقیاسبندی کانتینرهای برنامهتان و سایر قابلیتها ارائه میدهد.