كيفية تشغيل صورة Aspose.CAD Docker في Google Cloud

المتطلبات الأساسية

  • يجب أن يكون Docker مثبتًا على نظامك. لمعلومات حول كيفية تثبيت Docker على Windows أو Mac، يرجى الرجوع إلى الروابط في قسم “انظر أيضًا”.
  • Visual Studio 2022.
  • Google CLI.
  • تم استخدام NET Core 3.1 SDK في المثال.
  • Postman

وظيفة Google Cloud Run

Cloud Run هو بيئة حساب مُدارة بالكامل لنشر وتوسيع الحاويات غير الخادمة (serverless) HTTP دون الحاجة للقلق بشأن تزويد الآلات، أو تكوين الكتل، أو التوسيع التلقائي.

  • لا يوجد احتجاز بائع - نظرًا لأن Cloud Run يأخذ حاويات OCI القياسية ويطبق واجهة برمجة التطبيقات Knative Serving القياسية، يمكنك بسهولة نقل تطبيقاتك إلى الموقع أو أي بيئة سحابية أخرى.
  • التوسع التلقائي السريع - الخدمات الصغيرة (Microservices) المنشورة في Cloud Run تتوسع تلقائيًا بناءً على عدد الطلبات الواردة، دون الحاجة إلى إعداد أو إدارة كتلة Kubernetes متكاملة. Cloud Run يمكن أن يتوسع إلى الصفر - أي، لا يستخدم أي موارد - إذا لم تكن هناك طلبات.
  • تقسيم الحركة - يتيح لك Cloud Run تقسيم الحركة بين إصدارات متعددة، بحيث يمكنك إجراء طرح تدريجي مثل نشر الكاناري أو نشر الأزرق/الأخضر.
  • النطاقات المخصصة - يمكنك إعداد تعيين نطاق مخصص في Cloud Run وسوف يوفر شهادة TLS لنطاقك.
  • التكرار التلقائي - يقدم Cloud Run تكرارًا تلقائيًا بحيث لا داعي للقلق بشأن إنشاء عدة نسخ لتوفير توافر عالي.

كل من Cloud Run و Cloud Functions هما خدمات مُدارة بالكامل تعمل على البنية التحتية غير الخادمة من Google Cloud، وتقوم بالتوسع تلقائيًا، وتعالج طلبات HTTP أو الأحداث. ومع ذلك، هناك بعض الاختلافات المهمة:

  • يسمح لك Cloud Functions بنشر مقاطع من الشيفرة (الدوال) المكتوبة في مجموعة محدودة من لغات البرمجة، بينما يسمح لك Cloud Run بنشر صور الحاوية باستخدام لغة البرمجة التي تختارها.
  • يدعم Cloud Run أيضًا استخدام أي أداة أو مكتبة نظام من تطبيقك؛ بينما لا يسمح لك Cloud Functions باستخدام التنفيذيات المخصصة.
  • يقدم Cloud Run مدة تجاوز طلب أطول تصل إلى 60 دقيقة، بينما يمكن تعيين تجاوز الطلبات في Cloud Functions إلى 9 دقائق كحد أقصى.
  • يرسل Cloud Functions طلبًا واحدًا في كل مرة إلى كل مثيل دالة، بينما يتم تكوين Cloud Run افتراضيًا لإرسال طلبات متعددة متزامنة على كل مثيل من الحاوية. هذا مفيد لتحسين زمن الوصول وتقليل التكاليف إذا كنت تتوقع أحجامًا كبيرة.

إنشاء مشروع Google Cloud Function

لإنشاء برنامج Google Cloud Function، اتبع الخطوات أدناه:

  1. تثبيت .NET Core SDK 3.1.
  2. تثبيت حزمة القوالب:
    dotnet new -i Google.Cloud.Functions.Templates
  3. بعد ذلك، قم بإنشاء دليل لمشروعك، واستخدم dotnet new لإنشاء دالة HTTP جديدة:
    mkdir AsposeFunctions //إنشاء مجلد
    cd AsposeFunctions //الذهاب إلى مجلد AsposeFunctions
    dotnet new gcf-http //إنشاء مشروع Google Cloud Function مع مشغل http
  4. مثال على الشيفرة لملف csproj (AsposeFunctions.csproj).
    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Aspose.CAD" Version="22.7.0" />
        <PackageReference Include="Google.Cloud.Functions.Hosting" Version="1.0.0" />
      </ItemGroup>
    </Project>
  5. مثال على الشيفرة لتحويل صورة cad إلى ملف png (Function.cs).
    namespace AsposeFunctions
    {
        public class Function : IHttpFunction
        {
            /// <summary>
            /// المنطق لدالتك هنا.
            /// </summary>
            /// <param name="context">سياق HTTP، يحتوي على الطلب والاستجابة.</param>
            /// <returns>مهمة تمثل العملية غير المتزامنة.</returns>
            public async Task HandleAsync(HttpContext context)
            {
                try
                {
                    //var file = context.Request.Form.Files.FirstOrDefault(); //ملف النموذج
                    var file = context.Request.Body; //بيانات ثنائية
                    
                    var msFile = new MemoryStream();
                    await file.CopyToAsync(msFile);
                    msFile.Seek(0, SeekOrigin.Begin);
                    
                    using (var image = (CadImage)Image.Load(msFile))
                    {
                        var ms = new MemoryStream();
                        image.Save(ms, new PngOptions());
                        ms.Seek(0, System.IO.SeekOrigin.Begin);
    
                        context.Response.Headers.Add("Content-Type", "image/png");
                        context.Response.Headers.Add("Content-Disposition", "attachment;filename=result.png");
    
                        await context.Response.Body.WriteAsync(ms.ToArray(), 0, ms.ToArray().Length);
                    }
                }
                catch (Exception e)
                {
                    await context.Response.WriteAsync(e.Message);
                }
            }
        }
    }
  6. قم بإنشاء دالتك محليًا كالتالي:
    dotnet run
  7. بمجرد تشغيل الخادم، انتقل إلى http://localhost:8080 لاستدعاء الدالة. اضغط Ctrl-C في وحدة التحكم لإيقاف الخادم.

نشر صورة Docker إلى Google Cloud

  1. تسجيل الدخول إلى Google Cloud.
  2. إنشاء مشروع إذا لم يكن موجودًا.
  3. الذهاب إلى “Artifact Registry” وإنشاء مستودع.
    إنشاء مستودع Artifact
  4. حدد مستودع جديد في Artifact Registry. حدد مستودع artifact
  5. اضغط على ‘SETUP INSTRUCTION’ ونسخ الأمر ‘Configure Docker’.
    SETUP INSTRUCTION
  6. أضف إدخال credHelper لـ Docker إلى ملف إعدادات Docker، أو أنشئ الملف إذا لم يكن موجودًا.
    //مثال
    gcloud auth configure-docker {region}-docker.pkg.dev
    
    gcloud auth configure-docker europe-west1-docker.pkg.dev
  7. أنشئ Dockerfile في الدليل الجذري للمشروع وقم بتحرير DockerFile كما في قسم تكوين Dockerfile.
  8. ابدأ Docker Desktop.
  9. قم ببناء صورة Docker مع مسار المستودع السحابي.
    //مثال
    docker build -t {region}-docker.pkg.dev/{project-name}/{repository-name}/{any-name}:{tag} .
    
    docker build -t europe-west1-docker.pkg.dev/test/aspose/function:latest .
  10. ادفع الصورة إلى Google Cloud Artifact Registry
    //مثال
    docker build -t {region}-docker.pkg.dev/{project-name}/{repository-name}/{any-name}:{tag} .
    
    docker push europe-west1-docker.pkg.dev/test/aspose-cloud/function:latest

إنشاء خدمة Google Cloud Run

  1. انتقل إلى Cloud Run.
  2. إنشاء خدمة Cloud Run.
    إنشاء خدمة Cloud Run
  3. في حقل عنوان URL لصورة الحاوية، حدد الحاوية من ‘ARTIFACT REGISTRY’.
    عنوان URL لصورة الحاوية
  4. تحقق من الإعدادات الأخرى كما هو موضح أدناه.
    إعدادات الخدمة
  5. انتظر حتى تنتهي عملية النشر.
  6. عنوان URL للخدمة للعمل مع تطبيق التحويل.
    عنوان الخدمة

تكوين Dockerfile

الخطوة التالية هي تحرير تكوين Dockerfile في المشروع.

  1. في Dockerfile، حدد:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /build
COPY . .
RUN dotnet restore
RUN dotnet publish -c Release -o /app

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS final
WORKDIR /app
COPY --from=build /app .

RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get install -y libgdiplus
RUN apt-get install -y libc6-dev 
RUN ln -s /usr/lib/libgdiplus.so/usr/lib/gdiplus.dll

EXPOSE 8080
ENV ASPNETCORE_URLS=http://*:8080
ENV ASPNETCORE_ENVIRONMENT=Release
ENV TAPTAKE_SEED=false
ENTRYPOINT ["dotnet", "AsposeFunctions.dll"]

ما سبق هو Dockerfile بسيط، يحتوي على التعليمات التالية:

  • صورة SDK المراد استخدامها. هنا هي صورة Net Core 3.1. سوف يقوم Docker بتنزيلها عندما يتم تشغيل البناء. تم تحديد إصدار SDK كعلامة.
  • بعد ذلك، قد تحتاج إلى تثبيت الخطوط لأن صورة SDK تحتوي على عدد قليل جدًا من الخطوط. أيضًا، يمكنك استخدام الخطوط المحلية المنسوخة إلى صورة Docker.
  • دليل العمل، والذي يتم تحديده في السطر التالي.
  • الأمر لنسخ كل شيء إلى الحاوية، نشر التطبيق، وتحديد نقطة الدخول.

مثال على التنفيذ

  1. إعدادات Postman.
    قائمة نظرة عامة
  2. اختر أي ملف DXF، DWG، DGN، DWF، DWFX، IFC، STL، DWT، IGES، PLT، CF2، OBJ، HPGL، IGS، PCL، FBX، PDF، SVG.
  3. اضغط على زر الإرسال.

المزيد من الأمثلة

لمزيد من العينات حول كيفية استخدام Aspose.CAD في Docker، راجع أمثلة.

انظر أيضًا.