Come eseguire l'immagine Docker di Aspose.CAD in Azure Function

Requisiti

  • Docker deve essere installato sul tuo sistema. Per informazioni su come installare Docker su Windows o Mac, consulta i collegamenti nella sezione “Vedi anche”.
  • IntelliJ IDEA.
  • Azure Toolkit per IntelliJ.
  • Postman.

Azure Function

In questo esempio, crei una semplice funzione di conversione che converte un file CAD e lo salva come immagine. L’applicazione può quindi essere costruita in Docker ed eseguita in Azure Function.

Creazione della Azure Function

Per creare il programma Azure Function, segui i passaggi di seguito:

  1. Una volta installato Docker, assicurati che utilizzi contenitori Linux (predefinito). Se necessario, seleziona l’opzione Passa a contenitori Linux dal menu di Docker Desktops.

  2. Crea un progetto Azure Function in IntelliJ IDEA.
    Crea progetto Azure Function
    Crea progetto Azure Function - finale

  3. Strumenti -> Azure -> Accedi e seleziona l’autenticazione OAuth 2.0.
    Accesso ad Azure

  4. Accedi nel browser.

  5. Seleziona il nome dell’abbonamento.

  6. Aggiungi supporto Docker.
    Accesso ad Azure

  7. Modifica il DockerFile come nella sezione Configurare un Dockerfile.

  8. Aggiungi blocchi per il 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. Quando tutte le dipendenze necessarie sono aggiunte, scrivi un semplice programma che crea un’ellisse e la salva come immagine:

    public class HttpTriggerFunction {
        /**
         * Questa funzione ascolta all'endpoint "/api/HttpExample". Due modi per attivarla utilizzando il comando "curl" in bash:
         * 1. curl -d "Corpo HTTP" {il tuo host}/api/HttpExample
         * 2. curl "{il tuo 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("Il trigger HTTP Java ha elaborato una richiesta.");
    
            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();
            }
        }
    }

Configurazione di un Dockerfile

Il passo successivo è creare e configurare il Dockerfile nella cartella principale del progetto.

  1. Nel Dockerfile, specifica:
    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"]

Il sopra è un semplice Dockerfile, che contiene le seguenti istruzioni:

  • L’immagine SDK da utilizzare. Docker la scaricherà quando il build viene eseguito. La versione dell’SDK è specificata come tag.
  • La cartella di lavoro, che è specificata nella riga successiva.
  • Il comando per copiare tutto nel container, pubblicare l’applicazione e specificare il punto di ingresso.

Docker Hub

  1. Accedi a Docker Hub
  2. Crea un repository pubblico

Costruzione e esecuzione dell’applicazione in Docker

Ora l’applicazione può essere costruita ed eseguita in Docker. Apri il tuo prompt dei comandi preferito, cambia la directory nella cartella con l’applicazione (cartella in cui si trova il file di soluzione e il Dockerfile) e esegui il seguente comando:

  1. Costruisci il comando dockerfile nella console

    //esempio
    docker build -t <nome utente>/<nome repository> .
    
    docker build -t user/asposefunction .

  2. La prima volta che esegui questo comando, potrebbe richiedere più tempo perché Docker deve scaricare le immagini necessarie. Dopo che il comando precedente è stato completato, esegui il seguente comando per inviare l’immagine a Docker Hub.

    //esempio
    docker push <nome utente>/<nome repository>:tagname
    
    docker push user/aspose-cad-java:latest

  3. Esegui il Dockerfile in IDE e dopo invia a Docker Hub.
    Esegui docker in ide

  4. Inserisci il nome dell’immagine, come nel repository di Docker Hub.
    Esegui docker in ide - successivo

  5. Attendi la fine.

Azure

  1. Accedi ad Azure.
  2. Scegli i servizi Azure.
  3. Scegli Function App e crea una funzione.
    Pulsante crea funzione Azure
  4. Ripeti le impostazioni di base come nell’immagine seguente.
    Impostazioni crea funzione Azure
  5. Clicca su ‘Rivedi + crea’ -> Crea.
  6. Attendi il completamento del deployment.
  7. Clicca sul pulsante ‘Vai alla risorsa’.
    Pulsante risorsa
  8. Ferma la funzione aspose-cad-docker-example.
    Ferma contenitore
  9. Vai al menu centro di distribuzione e fai le impostazioni appropriate.
    Centro di distribuzione
  10. Salva le impostazioni
  11. Copia l’URL del webhook dalle impostazioni del centro di distribuzione.
    URL del webhook
  12. Vai a Docker Hub, seleziona il tuo repository e seleziona webhooks.
  13. Incolla l’URL del ‘Webhook’ da Azure nell’URL del webhook di Docker Hub e imposta il nome.
    Impostazioni del webhook in docker
  14. Clicca sul pulsante Crea.
  15. Torna alla panoramica della funzione Azure e avvia il contenitore.
    Menu panoramica

Esempio di esecuzione

  1. Impostazioni di Postman.
    Menu panoramica
  2. Seleziona qualsiasi file DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, file SVG.
  3. Clicca sul pulsante invia.
  4. Salva il risultato Salva risposta

Altri esempi

Per ulteriori campioni su come puoi utilizzare Aspose.CAD in Docker, consulta gli esempi.

Vedi anche