So führen Sie das Aspose.CAD Docker-Image in Azure Function 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“.
  • IntelliJ IDEA.
  • Azure Toolkit für IntelliJ.
  • Postman.

Azure Function

In diesem Beispiel erstellen Sie eine einfache Konvertierungsfunktion, die eine CAD-Datei konvertiert und als Bild speichert. Die Anwendung kann dann in Docker erstellt und in Azure Function ausgeführt werden.

Erstellen der Azure Function

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

  1. Stellen Sie sicher, dass Docker auf Linux-Containern (Standard) verwendet wird, nachdem es installiert wurde. Wählen sie gegebenenfalls im Dropdown-Menü von Docker Desktop die Option „Zu Linux-Containern wechseln“.

  2. Erstellen Sie ein Azure Function-Projekt in IntelliJ IDEA.
    Azure-Funktionsprojekt erstellen
    Azure-Funktionsprojekt erstellen-endgültig

  3. Tools->Azure->Anmelden und „OAuth 2.0“-Authentifizierung auswählen.
    Azure-Anmeldung

  4. Im Browser anmelden.

  5. Abonnementnamen auswählen.

  6. Docker-Unterstützung hinzufügen.
    Azure-Anmeldung

  7. Bearbeiten Sie die DockerFile wie im Abschnitt Konfigurieren einer Dockerfile.

  8. Blöcke für das Repository aspose.cad in die pom.xml hinzufügen.

    <repositories>
        <repository>
    		<id>AsposeJavaAPI</id>
            <name>Aspose Java API</name>
            <url>https://releases.aspose.com/java/repo/</url>
        </repository>
    </repositories>
    
    
    <dependencies>
     <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-cad</artifactId>
        <version>22.3</version>
        <scope>compile</scope>
      </dependency>
    </dependencies>

  9. Nachdem alle erforderlichen Abhängigkeiten hinzugefügt wurden, schreiben Sie ein einfaches Programm, das ein Ellipse erstellt und als Bild speichert:

    public class HttpTriggerFunction {
        /**
         * Diese Funktion lauscht am Endpunkt "/api/HttpExample". Zwei Möglichkeiten, sie mit dem „curl“-Befehl in der Bash aufzurufen:
         * 1. curl -d "HTTP-Body" {Ihr Host}/api/HttpExample
         * 2. curl "{Ihr Host}/api/HttpExample?name=HTTP%20Query"
         */
        @FunctionName("HttpExample")
        public HttpResponseMessage run(
                @HttpTrigger(
                    name = "req",
                    methods = {HttpMethod.GET, HttpMethod.POST},
                    authLevel = AuthorizationLevel.ANONYMOUS)
                    HttpRequestMessage<Optional<String>> request,
                final ExecutionContext context) throws FileNotFoundException {
            context.getLogger().info("Java-HTTP-Trigger hat eine Anforderung verarbeitet.");
    
            try{
                String body = request.getBody().get();
                InputStream targetStream = new ByteArrayInputStream(body.getBytes());
    
                CadImage image = (CadImage)Image.load(targetStream);
                {
                    CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
                    rasterizationOptions.setPageWidth(1200);
                    rasterizationOptions.setPageHeight(1200);
    
                    ImageOptionsBase options = new PngOptions();
                    options.setVectorRasterizationOptions(rasterizationOptions);
    
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
    
                    image.save(out, options);
    
                    return request.createResponseBuilder(HttpStatus.OK)
                            .header("Content-type", "image/png")
                            .header("Content-Disposition", "attachment;filename=filename.png")
                            .body(out.toByteArray()).build();
                }
            }
            catch (Exception e)
    		{
                return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body(e.getMessage()).build();
            }
        }
    }

Konfigurieren einer Dockerfile

Der nächste Schritt besteht darin, die Dockerfile im Stammprojektordner zu erstellen und zu konfigurieren.

  1. Geben Sie in der Dockerfile Folgendes an:
    FROM mcr.microsoft.com/azure-functions/java:3.0-java8-build AS installer-env
    
    COPY . /src/java-function-app
    RUN cd /src/java-function-app && \
        mkdir -p /home/site/wwwroot && \
        mvn clean package && \
        cd ./target/azure-functions/ && \
        cd $(ls -d */|head -n 1) && \
        cp -a . /home/site/wwwroot
    
    FROM mcr.microsoft.com/azure-functions/java:3.0-java8-appservice
    
    ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
        AzureFunctionsJobHost__Logging__Console__IsEnabled=true
    
    COPY --from=installer-env ["/home/site/wwwroot", "/home/site/wwwroot"]

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

  • Das SDK-Image, das verwendet werden soll. Docker wird es herunterladen, wenn der Build ausgeführt wird. Die Version des SDK wird als Tag angegeben.
  • Das Arbeitsverzeichnis wird in der nächsten Zeile angegeben.
  • Der Befehl zum Kopieren von allem in den Container, zum Veröffentlichen der Anwendung und zum Festlegen des Einstiegspunkts.

Docker Hub

  1. Bei Docker Hub anmelden
  2. Öffentliches Repository erstellen

Anwendung in Docker erstellen und ausführen

Die Anwendung kann nun in Docker erstellt und ausgeführt werden. Öffnen Sie Ihre bevorzugte Eingabeaufforderung, wechseln Sie zum Verzeichnis mit der Anwendung (Ordner, in dem die Lösungsdatei und die Dockerfile platziert sind) und führen Sie folgenden Befehl aus:

  1. Dockerfile-Befehl im Konsolenfenster erstellen

    //Beispiel
    docker build -t <Benutzername>/<Repositoriesname> .
    
    docker build -t benutzer/asposefunction .

  2. Beim ersten Ausführen dieses Befehls kann es länger dauern, da Docker die erforderlichen Images herunterladen muss. Nach Abschluss des vorherigen Befehls führen Sie den folgenden Befehl aus, um das Image auf Docker Hub hochzuladen.

    //Beispiel
    docker push <Benutzername>/<Repositoriesname>:Tagname
    
    docker push benutzer/aspose-cad-java:latest

  3. Dockerfile in IDE ausführen und anschließend in Docker Hub hochladen.
    Docker in IDE ausführen

  4. Geben Sie den Namen des Bildes ein, wie im Docker-Hub-Repository.
    Docker in IDE ausführen-nächster Schritt

  5. Warten Sie auf Beendigung.

Azure

  1. Bei Azure anmelden.
  2. Azure-Dienste auswählen.
  3. Funktion-App auswählen und eine Funktion erstellen.
    Azure-Schaltfläche „Funktion erstellen“
  4. Wiederholen Sie die grundlegenden Einstellungen, wie im folgenden Bild.
    Azure-Funktionseinstellungen erstellen
  5. Auf „Überprüfen + Erstellen“ klicken -> Erstellen.
  6. Auf Abschluss des Bereitstellungsvorgangs warten.
  7. Auf die Schaltfläche „Zur Ressource gehen“ klicken.
    Ressourcen-Schaltfläche
  8. Stoppen Sie die Funktion aspose-cad-docker-example.
    Container anhalten
  9. Gehen Sie zum Menü „Bereitstellungszentrum“ und nehmen Sie die entsprechenden Einstellungen vor.
    Bereitstellungszentrum
  10. Einstellungen speichern.
  11. Webhook-URL aus den Einstellungen des Bereitstellungszentrums kopieren.
    Webhook-URL
  12. Gehen Sie zu Docker Hub, wählen Sie Ihr Repository aus und wählen Sie Webhooks aus.
  13. Fügen Sie die „Webhook-URL“ von Azure in die „Docker Hub“-Webhook-URL ein und legen Sie den Namen fest.
    Webhook-Einstellungen in Docker
  14. Klicken Sie auf „Erstellen“.
  15. Zurück zur Übersicht der Azure-Funktion und Container starten.
    Menü Übersicht

Ausführungsbeispiel

  1. Postman-Einstellungen.
    Menü Übersicht
  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“.
  4. Ergebnis speichern Antwort speichern

Weitere Beispiele

Für weitere Beispiele zur Verwendung von Aspose.CAD in Docker sehen Sie die Beispiele.

Siehe auch