Aspose.CAD Docker görüntüsünü Azure Function'da Çalıştırma

Ön Koşullar

  • Docker sisteminizde kurulu olmalıdır. Docker’ı Windows veya Mac’te nasıl kuracağınıza dair bilgiler için “Ayrıca Bakınız” bölümündeki bağlantılara başvurun.
  • Visual Studio 2022.
  • Örnekte .NET 6 SDK kullanılmıştır.
  • Postman

Azure Function

Bu örnekte, bir CAD dosyasını dönüştüren ve bir görüntü olarak kaydeden basit bir dönüştürme fonksiyonu oluşturuyorsunuz. Uygulama daha sonra Docker’da oluşturulabilir ve Azure Function’da çalıştırılabilir.

Azure Function Oluşturma

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

  1. Docker kurulduktan sonra, Linux Konteynerlerini (varsayılan) kullandığından emin olun. Gerekirse, Docker Desktops menüsünden Linux konteynerlerine geçiş seçeneğini seçin.
  2. Visual Studio’da bir .NET 6 Azure Function oluşturun.
    Bir .NET 6 Azure Function proje iletişim kutusu
  3. Ek bilgi.
    Bir .NET 6 Azure Function proje iletişim kutusu
  4. NuGet’ten en son Aspose.CAD sürümünü yükleyin.
    NuGette Aspose.CAD
  5. Uygulama Linux’ta çalışacağı için ek yazı tipleri kurmanız gerekebilir. ttf-mscorefonts-installer’i tercih edebilirsiniz.
  6. Tüm gerekli bağımlılıklar eklendikten sonra, bir elips oluşturan ve bunu bir görüntü olarak kaydeden basit bir program yazın:
public static class Function1
{
    [FunctionName("convert")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("C# HTTP tetikleyici fonksiyonu bir isteği işledi.");
        try
        {
            using (var image = (CadImage)Image.Load(req.Body))
            {
                var ms = new MemoryStream();
                image.Save(ms, new PngOptions());

                ms.Seek(0, (System.IO.SeekOrigin)SeekOrigin.Begin);

                return new FileContentResult(ms.ToArray(), "application/octet-stream")
                {
                    FileDownloadName = "Export.png"
                };
            }
        }
        catch (Exception e)
        {
            return new OkObjectResult(e.Message);
        }
    }
}

Dockerfile’ı Yapılandırma

Bir sonraki adım, kök proje klasöründe Dockerfile’ı oluşturmak ve yapılandırmaktır.

  1. Dockerfile’ı oluşturun ve uygulamanızın çözüm dosyasının yanına yerleştirin. Bu dosya adını uzantı olmadan tutun (varsayılan). Kök proje klasörü
  2. Dockerfile’da, belirtin:
FROM mcr.microsoft.com/azure-functions/dotnet:4 AS base
WORKDIR /home/site/wwwroot
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 80

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Aspose.CAD.Function/Aspose.CAD.Function.csproj", "Aspose.CAD.Function/"]
RUN dotnet restore "Aspose.CAD.Function/Aspose.CAD.Function.csproj"
COPY . .
WORKDIR "/src/Aspose.CAD.Function"
RUN dotnet build "Aspose.CAD.Function.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Aspose.CAD.Function.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /home/site/wwwroot
COPY --from=publish /app/publish .
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

Yukarıdaki basit bir Dockerfile’dır ve şu talimatları içerir:

  • Kullanılacak SDK görüntüsü. Burada, .NET 6 görüntüsüdir. Docker, derleme çalıştırıldığında bunu indirecektir. SDK sürümü bir etiket olarak belirtilmiştir.
  • Daha sonra, belgelerin çok az yazı tipi içerdiği için 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 kopyalamak, uygulamayı yayımlamak ve giriş noktasını belirtme komutu.

Docker Hub

  1. Docker Hub’a giriş yapın.
  2. Kamu Deposu oluşturun.

Uygulamayı Docker’da Oluşturma ve Çalıştırma

Şimdi uygulama Docker’da oluşturulabilir ve çalıştırılabilir. Tercih ettiğiniz komut istemcisini açın, uygulamanızın bulunduğu (çözüm dosyası ve Dockerfile’ın yer aldığı) klasöre geçin ve aşağıdaki komutu çalıştırın:

//örnek
docker build -t <kullanıcı adı>/<depo adı> .

docker build -t kullanıcı/asposefunction .

Bu komutu ilk kez çalıştırdığınızda, gerekli görüntüleri indirmek için Docker’ın biraz daha uzun sürmesi gerekebilir. Önceki komut tamamlandıktan sonra, görüntüyü docker hub’a yüklemek için aşağıdaki komutu çalıştırın:

//örnek
docker push <kullanıcı adı>/<depo adı>:tagname

docker push kullanıcı/asposefunction:latest

Azure

  1. Azure’a giriş yapın.
  2. Azure hizmetlerini seçin.
  3. Function App seçin ve bir fonksiyon oluşturun.
    Azure fonksiyon oluştur butonu
  4. Aşağıdaki görüntüdeki gibi temel ayarları tekrarlayın.
    Azure fonksiyon ayarları
  5. ‘Gözden Geçir + oluştur’ -> Oluştur’a tıklayın.
  6. Dağıtımın tamamlanmasını bekleyin.
  7. ‘Kaynağa git’ butonuna tıklayın.
    Kaynak butonu
  8. aspose-cad-docker-example fonksiyonunu durdurun.
    Konteyneri durdur
  9. Dağıtım merkezi menüsüne gidin ve gereken ayarları yapın.
    Dağıtım merkezi
  10. Ayarları kaydedin.
  11. Dağıtım merkezi ayarlarından Webhook URL’sini kopyalayın.
    Webhook url
  12. Docker Hub’a gidin, deponuzu seçin ve webhooks’u seçin.
  13. Azure’dan alınan ‘Webhook url’ini Docker Hub webhook url’sine yapıştırın ve adlandırın.
    Dockerdaki Webhook ayarları
  14. Oluştur butonuna tıklayın.
  15. Genel bakış Azure fonksiyonuna geri dönün ve konteyneri başlatın.
    Genel bakış menüsü

Çalışma örneği

  1. Postman ayarları.
    Genel bakış 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’ın Docker’da nasıl kullanılmasına dair daha fazla örnek için örneklere bakın.

Ayrıca Bakınız