Hoe de Aspose.CAD Docker afbeelding uit te voeren in Azure Function

Vereisten

  • Docker moet op uw systeem zijn geïnstalleerd. Voor informatie over hoe u Docker op Windows of Mac installeert, verwijst u naar de links in de sectie “Zie ook”.
  • IntelliJ IDEA.
  • Azure Toolkit voor IntelliJ.
  • Postman.

Azure Function

In dit voorbeeld maakt u een eenvoudige conversiefunctie die een CAD-bestand converteert en opslaat als een afbeelding. De applicatie kan dan worden gebouwd in Docker en uitgevoerd in Azure Function.

De Azure Function maken

Om het Azure Function-programma te maken, volgt u de onderstaande stappen:

  1. Zodra Docker is geïnstalleerd, zorgt u ervoor dat het Linux-containers gebruikt (standaard). Indien nodig selecteert u de optie Overschakelen naar Linux-containers in het menu van Docker Desktops.

  2. Maak een Azure Function-project in IntelliJ IDEA.
    Create azure function project
    Create azure function project-final

  3. Tools->Azure->Aanmelden en selecteer OAuth 2.0-authenticatie.
    Azure sign In

  4. Log in in uw browser.

  5. Selecteer de abonnementsnaam.

  6. Voeg Docker-ondersteuning toe.
    Azure sign In

  7. Bewerk het Dockerfile zoals in de sectie Een Dockerfile configureren.

  8. Voeg blokken toe voor de repository aspose.cad in pom.xml.

    <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. Wanneer alle vereiste afhankelijkheden zijn toegevoegd, schrijft u een eenvoudig programma dat een ellips maakt en opslaat als een afbeelding:

    public class HttpTriggerFunction {
        /**
         * Deze functie luistert op het eindpunt "/api/HttpExample". Twee manieren om het aan te roepen met de "curl"-opdracht in bash:
         * 1. curl -d "HTTP Body" {your host}/api/HttpExample
         * 2. curl "{your 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 heeft een verzoek verwerkt.");
    
            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();
            }
        }
    }

Een Dockerfile configureren

De volgende stap is om de Dockerfile in de hoofdprojectmap te maken en te configureren.

  1. Specificeer in de Dockerfile:
    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"]

Het bovenstaande is een eenvoudige Dockerfile, die de volgende instructies bevat:

  • De SDK-afbeelding die moet worden gebruikt. Docker downloadt deze wanneer de build wordt uitgevoerd. De versie van de SDK wordt als tag opgegeven.
  • De werkdirectory, die in de volgende regel wordt gespecificeerd.
  • De opdracht om alles naar de container te kopiëren, de applicatie te publiceren en het entry point op te geven.

Docker Hub

  1. Meld u aan bij Docker Hub
  2. Maak een openbare repository

De applicatie bouwen en uitvoeren in Docker

Nu kan de applicatie worden gebouwd en uitgevoerd in Docker. Open uw favoriete opdrachtprompt, wijzig de directory naar de map met de applicatie (map waarin het oplossingbestand en de Dockerfile zijn geplaatst) en voer de volgende opdracht uit:

  1. Dockerfile-bouwopdracht in de console

    //voorbeeld
    docker build -t <gebruikersnaam>/<repository-naam> .
    
    docker build -t user/asposefunction .

  2. De eerste keer dat u deze opdracht uitvoert, kan het langer duren omdat Docker de benodigde afbeeldingen moet downloaden. Nadat de vorige opdracht is voltooid, voert u de volgende opdracht uit om de afbeelding naar Docker Hub te duwen.

    //voorbeeld
    docker push <gebruikersnaam>/<repository-naam>:tagnaam
    
    docker push user/aspose-cad-java:latest

  3. Voer het Dockerfile uit in de IDE en push daarna naar Docker Hub.
    Run docker in ide

  4. Voer de naam van de afbeelding in, zoals in de Docker Hub-repository.
    Run docker in ide-next

  5. Wacht tot deze is afgelopen.

Azure

  1. Meld u aan bij Azure.
  2. Kies Azure-services.
  3. Kies Function App en maak een functie.
    Azure create function button
  4. Herhaal de basisinstellingen zoals in de afbeelding hieronder.
    Azure create function settings
  5. Klik op ‘Beoordelen + maken’ -> Maken.
  6. Wacht tot de implementatie is voltooid.
  7. Klik op de knop ‘Ga naar resource’.
    Resource button
  8. Stop de aspose-cad-docker-example-functie.
    Stop conteiner
  9. Ga naar het menu implementatiecentrum en maak de juiste instellingen.
    Deployment center
  10. Sla de instellingen op
  11. Kopieer de Webhook-URL van de instellingen van het implementatiecentrum.
    Webhook url
  12. Ga naar Docker Hub, selecteer uw repository en selecteer webhooks.
  13. Plak de ‘Webhook-URL’ van Azure in de Docker Hub-webhook-URL en stel de naam in.
    Webhook settings in docker
  14. Klik op de knop ‘Maken’.
  15. Ga terug naar het overzicht van de Azure-functie en start de container.
    Overview menu

Voorbeeld van uitvoering

  1. Postman-instellingen.
    Overview menu
  2. Selecteer een DXF-, DWG-, DGN-, DWF-, DWFX-, IFC-, STL-, DWT-, IGES-, PLT-, CF2-, OBJ-, HPGL-, IGS-, PCL-, FBX-, PDF-, SVG-bestand.
  3. Klik op de verzendknop.
  4. Sla resultaat op Save responce

Meer Voorbeelden

Voor meer voorbeelden van hoe u Aspose.CAD in Docker kunt gebruiken, zie de voorbeelden.

Zie Ook