Aspose.CAD Docker görüntüsünü Google Cloud'da çalıştırma

Ön koşullar

  • Sisteminizde Docker yüklü olmalıdır. Windows veya Mac’te Docker’ı nasıl yükleyeceğiniz hakkında bilgi için “Ayrıca Bakınız” bölümündeki bağlantılara bakın.
  • Visual Studio 2022.
  • Google CLI.
  • Örnek olarak .NET Core 3.1 SDK kullanılmaktadır.
  • Postman

Google Cloud Run Fonksiyonu

Cloud Run, sunucusuz HTTP konteynerlerini dağıtma ve ölçeklendirme için makine sağlamadan, kümeleri yapılandırmadan veya otomatik ölçeklendirme ile ilgilenmeden kullanılan tamamen yönetilen bir hesaplama ortamıdır.

  • Tedarikçi bağımlılığı yoktur - Cloud Run, standart OCI konteynerlerini alır ve standart Knative Serving API’sini uygular, böylece uygulamalarınızı kendi sunucularınıza veya herhangi bir bulut ortamına kolayca taşıyabilirsiniz.
  • Hızlı otomatik ölçeklendirme - Cloud Run’da dağıtılan mikro hizmetler, gelen istek sayısına bağlı olarak otomatik olarak ölçeklenir, bu nedenle tam teşekküllü bir Kubernetes kümesini yapılandırmanız veya yönetmeniz gerekmez. Cloud Run, isteğin olmadığı durumlarda kaynak kullanmaz, yani sıfıra ölçeklenir.
  • Trafiği bölme - Cloud Run, birden fazla revizyon arasında trafiği bölmenizi sağlar, böylece canary dağıtımları veya blue/green dağıtımları gibi kademeli yayılımlar gerçekleştirebilirsiniz.
  • Özel alan adları - Cloud Run’da özel alan adı eşleştirmesi yapabilir ve alanınız için bir TLS sertifikası sağlayacaktır.
  • Otomatik yedeklilik - Cloud Run otomatik yedeklilik sunar, böylece yüksek erişilebilirlik için birden fazla örnek oluşturmakla endişelenmenize gerek kalmaz.

Cloud Run ve Cloud Functions, Google Cloud’un sunucusuz altyapısında çalışan, otomatik ölçeklenebilen ve HTTP isteklerini veya olaylarını yöneten tamamen yönetilen hizmetlerdir. Ancak bazı önemli farklılıkları vardır:

  • Cloud Functions, sınırlı bir programlama dillerinde yazılmış kod parçacıkları (fonksiyonlar) dağıtmanıza olanak tanırken, Cloud Run, seçtiğiniz programlama dilini kullanarak konteyner görüntüleri dağıtmanıza olanak tanır.
  • Cloud Run ayrıca uygulamanızdan herhangi bir araç veya sistem kütüphanesinin kullanılmasına izin verir; Cloud Functions özel yürütülebilir dosyalar kullanmanıza izin vermez.
  • Cloud Run, 60 dakikaya kadar daha uzun bir işlem zaman aşımı süresi sunar; Cloud Functions ile istek zaman aşımı en fazla 9 dakikaya ayarlanabilir.
  • Cloud Functions her bir fonksiyon örneğine bir seferde yalnızca bir istek gönderir. Cloud Run ise varsayılan olarak her bir konteyner örneğinde birden fazla eşzamanlı istek gönderecek şekilde yapılandırılmıştır. Bu, büyük hacim bekliyorsanız gecikmeyi azaltmaya ve maliyetleri düşürmeye yardımcı olur.

Google Cloud Function projesini oluşturma

Google Cloud Function programını oluşturmak için aşağıdaki adımları izleyin:

  1. .NET Core SDK 3.1’i yükleyin.
  2. Şablon paketini yükleyin:
    dotnet new -i Google.Cloud.Functions.Templates
  3. Ardından, projeniz için bir dizin oluşturun ve yeni bir HTTP fonksiyonu oluşturmak için dotnet new kullanın:
    mkdir AsposeFunctions //kapsayıcı oluştur
    cd AsposeFunctions //AsposeFunctions dizinine git
    dotnet new gcf-http //http tetikleyici ile Google Cloud Function projesi oluştur
  4. csproj dosyası örneği (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 görüntüsünü PNG dosyasına dönüştürme kodu örneği (Function.cs).
    namespace AsposeFunctions
    {
        public class Function : IHttpFunction
        {
            /// <summary>
            /// Fonksiyonunuzun mantığı burada yer alıyor.
            /// </summary>
            /// <param name="context">İsteği ve yanıtı içeren HTTP bağlamı.</param>
            /// <returns>Asenkron işlemi temsil eden bir görev.</returns>
            public async Task HandleAsync(HttpContext context)
            {
                try
                {
                    //var file = context.Request.Form.Files.FirstOrDefault(); //form dosyası
                    var file = context.Request.Body; //ikili veri
                    
                    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. İşlevinizi yerel olarak aşağıdaki gibi oluşturun:
    dotnet run
  7. Sunucu çalışmaya başladığında, fonksiyonu çağırmak için http://localhost:8080 adresine gidin. Sunucuyu durdurmak için konsolda Ctrl-C tuşlarına basın.

Docker görüntüsünü Google Cloud’a dağıtma

  1. Google Cloud’a giriş yapın.
  2. Yoksa bir proje oluşturun.
  3. ‘Artifact Registry’ye gidin ve bir depo oluşturun.
    Artifact Repository Oluştur
  4. Artifact Registry’de yeni depoyu seçin. Artifact deposunu seç
  5. ‘KURULUM TALİMATLARI’na tıklayın ve ‘Docker’ yapılandırma komutunu kopyalayın.
    KURULUM TALİMATLARI
  6. Docker’ın yapılandırma dosyasına bir Docker credHelper girişi ekleyin veya dosya yoksa oluşturun.
    //örnek
    gcloud auth configure-docker {region}-docker.pkg.dev
    
    gcloud auth configure-docker europe-west1-docker.pkg.dev
  7. Proje ana dizininde bir Dockerfile oluşturun ve DockerFile’ı Dockerfile’ı Yapılandırma bölümündeki gibi düzenleyin.
  8. Docker Desktop’u başlatın.
  9. Bulut deposu yoluyla docker görüntüsünü oluşturun.
    //örnek
    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. Görüntüyü Google Cloud Artifact Registry’ye gönderin.
    //örnek
    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 hizmeti oluşturma

  1. Cloud Run’a gidin.
  2. Cloud Run hizmeti oluşturun.
    Cloud Run hizmeti oluştur
  3. Konteyner Görüntü URL alanında ‘ARTIFACT REGISTRY’ den konteyneri seçin.
    Konteyner Görüntü URLsi
  4. Aşağıdaki ayarları kontrol edin.
    Hizmet ayarları
  5. Dağıtımın tamamlanmasını bekleyin.
  6. Dönüştürme uygulaması ile çalışmak için hizmet URL’si.
    Hizmet urlsi

Dockerfile’ı Yapılandırma

Sonraki adım projenizde Dockerfile’ı düzenlemektir.

  1. Dockerfile’da belirtin:
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"]

Yukarıdaki, aşağıdaki talimatları içeren basit bir Dockerfile’dır:

  • Kullanılacak SDK görüntüsü. Burada Net Core 3.1 görüntüsü kullanılır. Docker, yapı sırasında bunu indirecektir. SDK’nın sürümü bir etiket olarak belirtilmiştir.
  • Daha sonra, SDK görüntüsü çok az yazı tipine sahip olduğundan yazı tiplerini yüklemeniz gerekebilir. Ayrıca, Docker görüntüsüne kopyalanmış yerel yazı tiplerini de kullanabilirsiniz.
  • Bir sonraki satırda belirtilen çalışma dizini.
  • Her şeyi konteynere kopyalama, uygulamayı yayınlama ve giriş noktası belirleme komutu.

Uygulama örneği

  1. Postman ayarları.
    Genel görünüm menüsü
  2. Herhangi bir DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG dosyasını seçin.
  3. Gönder butonuna tıklayın.

Daha Fazla Örnek

Aspose.CAD’i Docker’da nasıl kullanabileceğiniz hakkında daha fazla örnek için örnekler sayfasına bakın.

Ayrıca Bakınız.