So führen Sie das Aspose.CAD Docker-Image in Google Cloud aus

Voraussetzungen

  • Docker muss auf Ihrem System installiert sein. Informationen zur Installation von Docker unter Windows oder Mac finden Sie in den Links im Abschnitt „Siehe auch“.
  • Visual Studio 2022.
  • Google CLI.
  • NET Core 3.1 SDK wird im Beispiel verwendet.
  • Postman

Google Cloud Run Funktion

Cloud Run ist eine vollständig verwaltete Compute-Umgebung zum Bereitstellen und Skalieren serverloser HTTP-Container, ohne sich um die Bereitstellung von Maschinen, die Konfiguration von Clustern oder das automatische Skalieren kümmern zu müssen.

  • Kein Anbieter-Lock-in - Da Cloud Run standardisierte OCI-Container verwendet und die Standard-Knative Serving API implementiert, können Sie Ihre Anwendungen problemlos in lokale oder andere Cloud-Umgebungen portieren.
  • Schnelles automatisches Skalieren - Mikrodienste, die in Cloud Run bereitgestellt werden, skalieren automatisch basierend auf der Anzahl der eingehenden Anfragen, ohne dass Sie einen vollwertigen Kubernetes-Cluster konfigurieren oder verwalten müssen. Cloud Run skaliert auf null, das heißt, es werden keine Ressourcen verwendet, wenn es keine Anfragen gibt.
  • Verkehr aufteilen - Cloud Run ermöglicht es Ihnen, den Verkehr zwischen mehreren Revisionen aufzuteilen, sodass Sie schrittweise Rollouts wie Canary-Bereitstellungen oder Blue/Green-Bereitstellungen durchführen können.
  • Benutzerdefinierte Domains - Sie können in Cloud Run eine benutzerdefinierte Domain-Zuordnung einrichten, und es wird ein TLS-Zertifikat für Ihre Domain bereitgestellt.
  • Automatische Redundanz - Cloud Run bietet automatische Redundanz, sodass Sie sich keine Sorgen machen müssen, mehrere Instanzen für hohe Verfügbarkeit zu erstellen.

Cloud Run und Cloud Functions sind beide vollständig verwaltete Dienste, die auf der serverlosen Infrastruktur von Google Cloud ausgeführt werden, automatisch skalieren und HTTP-Anfragen oder Ereignisse verarbeiten. Sie haben jedoch einige wichtige Unterschiede:

  • Cloud Functions ermöglicht es Ihnen, Code-Snippets (Funktionen) in einer begrenzten Anzahl von Programmiersprachen bereitzustellen, während Cloud Run es Ihnen ermöglicht, Container-Images mit der Programmiersprache Ihrer Wahl bereitzustellen.
  • Cloud Run unterstützt auch die Verwendung von beliebigen Tools oder Systembibliotheken aus Ihrer Anwendung; Cloud Functions erlaubt es nicht, benutzerdefinierte ausführbare Dateien zu verwenden.
  • Cloud Run bietet eine längere Zeitüberschreitung für Anfragen von bis zu 60 Minuten, während bei Cloud Functions die Zeitüberschreitung für Anfragen auf maximal 9 Minuten eingestellt werden kann.
  • Cloud Functions sendet nur eine Anfrage gleichzeitig an jede Funktionsinstanz, während Cloud Run standardmäßig so konfiguriert ist, dass mehrere gleichzeitige Anfragen an jede Containerinstanz gesendet werden. Dies ist hilfreich, um die Latenz zu verbessern und Kosten zu reduzieren, wenn Sie mit hohen Volumina rechnen.

Erstellen des Google Cloud Function-Projekts

Um das Google Cloud Function-Programm zu erstellen, befolgen Sie die folgenden Schritte:

  1. Installieren Sie das .NET Core SDK 3.1.
  2. Installieren Sie das Vorlagenpaket:
    dotnet new -i Google.Cloud.Functions.Templates
  3. Erstellen Sie als Nächstes ein Verzeichnis für Ihr Projekt und verwenden Sie dotnet new, um eine neue HTTP-Funktion zu erstellen:
    mkdir AsposeFunctions //Ordner erstellen
    cd AsposeFunctions //Zum Ordner AsposeFunctions wechseln
    dotnet new gcf-http //Google Cloud Function-Projekt mit HTTP-Trigger erstellen
  4. Codebeispiel für die csproj-Datei (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. Codebeispiel für die Konvertierung von CAD-Bildern in PNG-Dateien (Function.cs).
    namespace AsposeFunctions
    {
        public class Function : IHttpFunction
        {
            /// <summary>
            /// Logik für Ihre Funktion befindet sich hier.
            /// </summary>
            /// <param name="context">Der HTTP-Kontext, der die Anfrage und die Antwort enthält.</param>
            /// <returns>Eine Aufgabe, die die asynchrone Operation darstellt.</returns>
            public async Task HandleAsync(HttpContext context)
            {
                try
                {
                    //var file = context.Request.Form.Files.FirstOrDefault(); //Formular-Datei
                    var file = context.Request.Body; //binäre Daten
                    
                    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. Bauen Sie Ihre Funktion lokal wie folgt:
    dotnet run
  7. Sobald der Server läuft, rufen Sie http://localhost:8080 auf, um die Funktion aufzurufen. Drücken Sie Strg-C in der Konsole, um den Server zu stoppen.

Docker-Image in Google Cloud bereitstellen

  1. Melden Sie sich bei Google Cloud an.
  2. Erstellen Sie ein Projekt, falls es nicht existiert.
  3. Gehen Sie zu ‘Artifact Registry’ und erstellen Sie ein Repository.
    Artifact-Repository erstellen
  4. Wählen Sie das neue Repository im Artifact Registry aus. Artifact-Repository auswählen
  5. Klicken Sie auf ‘EINRICHTUNGSANWEISUNG’ und kopieren Sie den Befehl ‘Docker konfigurieren’.
    EINRICHTUNGSANWEISUNG
  6. Fügen Sie einen Docker-Credential-Helfer-Eintrag zur Konfigurationsdatei von Docker hinzu oder erstellen Sie die Datei, falls sie nicht vorhanden ist.
    //Beispiel
    gcloud auth configure-docker {region}-docker.pkg.dev
    
    gcloud auth configure-docker europe-west1-docker.pkg.dev
  7. Erstellen Sie eine Dockerfile im Stammverzeichnis des Projekts und bearbeiten Sie die Dockerfile wie im Abschnitt Konfiguration einer Dockerfile.
  8. Starten Sie Docker Desktop.
  9. Erstellen Sie das Docker-Image mit dem Pfad zum Cloud-Repository.
    //Beispiel
    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. Pushen Sie das Image in das Google Cloud Artifact Registry
    //Beispiel
    docker push {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-Dienst erstellen

  1. Gehen Sie zu Cloud Run.
  2. Erstellen Sie den Cloud Run-Dienst.
    Cloud Run-Dienst erstellen
  3. Wählen Sie im Feld Container-Image-URL das Container-Image aus ‘ARTIFACT REGISTRY’.
    Container-Image-URL
  4. Überprüfen Sie andere Einstellungen wie unten.
    Einstellungen für den Dienst
  5. Warten Sie, bis die Bereitstellung abgeschlossen ist.
  6. Dienst-URL zur Verwendung mit der Konvertierungsanwendung.
    URL-Dienst

Konfiguration einer Dockerfile

Der nächste Schritt besteht darin, die Dockerfile im Projekt zu konfigurieren.

  1. Geben Sie in der Dockerfile an:
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"]

Das obige ist eine einfache Dockerfile, die die folgenden Anweisungen enthält:

  • Das verwendete SDK-Image. Hier ist es das Net Core 3.1-Image. Docker wird es herunterladen, wenn der Build ausgeführt wird. Die Version des SDK wird als Tag angegeben.
  • Danach müssen Sie möglicherweise Schriftarten installieren, da das SDK-Image nur sehr wenige Schriftarten enthält. Sie können auch lokale Schriftarten verwenden, die in das Docker-Image kopiert werden.
  • Das Arbeitsverzeichnis, das in der nächsten Zeile angegeben wird.
  • Der Befehl, um alles in den Container zu kopieren, die Anwendung zu veröffentlichen und den Einstiegspunkt anzugeben.

Ausführungsbeispiel

  1. Postman-Einstellungen.
    Übersichtsmenü
  2. Wählen Sie eine beliebige DXF-, DWG-, DGN-, DWF-, DWFX-, IFC-, STL-, DWT-, IGES-, PLT-, CF2-, OBJ-, HPGL-, IGS-, PCL-, FBX-, PDF-, SVG-Datei aus.
  3. Klicken Sie auf die Schaltfläche “Senden”.

Weitere Beispiele

Für weitere Beispiele, wie Sie Aspose.CAD in Docker verwenden können, siehe die Beispiele.

Siehe auch.