خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه کانتینریزه کردن برنامه های Rust با Docker

برنامه های 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!” پاسخ می دهد.

مطلب مرتبط:   هر آنچه که برای شروع نوشتن Rust باید بدانید

تابع اصلی یک نمونه سرور را با تابع 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 در کانتینر ارسال می کند.

مطلب مرتبط:   JetBrains Fleet و VS Code: کدام یک بهتر است؟

نتیجه اجرای سرور از طریق Docker-1 است

می توانید از طریق پورت لوکال هاست 8080 درخواست هایی را برای تماس با سرور وب به کانتینر ارسال کنید.

Docker Compose ارکستراسیون چند کانتینری را فعال می کند

کار با چندین کانتینر یک کار رایج هنگام ساخت برنامه های کاربردی Docker پیچیده است. می توانید از Docker Compose برای کار با چندین کانتینر Docker استفاده کنید.

Docker Compose عملکردی را برای تعریف سرویس‌هایی که برنامه شما را تشکیل می‌دهند، تعیین وابستگی‌های بین سرویس‌ها، تعریف متغیرهای محیطی برای هر سرویس، شروع، توقف، راه‌اندازی مجدد، مقیاس‌بندی کانتینرهای برنامه‌تان و سایر قابلیت‌ها ارائه می‌دهد.