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, fai riferimento ai link nella sezione “Vedi anche”.
  • Visual Studio 2022.
  • NET 6 SDK è utilizzato nell’esempio.
  • 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 e eseguita in Azure Function.

Creazione della Azure Function

Per creare il programma Azure Function, segui i passaggi qui sotto:

  1. Una volta installato Docker, assicurati che utilizzi i contenitori Linux (default). Se necessario, seleziona l’opzione Passa a contenitori Linux dal menu di Docker Desktop.
  2. In Visual Studio, crea una Azure Function NET 6.
    Dialogo del progetto Azure Function NET 6
  3. Informazioni aggiuntive.
    Dialogo del progetto Azure Function NET 6
  4. Installa l’ultima versione di Aspose.CAD da NuGet.
    Aspose.CAD su NuGet
  5. Poiché l’applicazione verrà eseguita su Linux, potrebbe essere necessario installare caratteri aggiuntivi. Puoi preferire ttf-mscorefonts-installer.
  6. Quando tutte le dipendenze richieste sono state aggiunte, scrivi un semplice programma che crea un’ellisse e la salva come immagine:
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("La funzione di trigger HTTP C# ha elaborato una richiesta.");
        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);
        }
    }
}

Configurazione di un Dockerfile

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

  1. Crea il Dockerfile e posizionalo accanto al file di soluzione della tua applicazione. Mantieni questo nome di file senza estensione (il default). Cartella principale del progetto
  2. Nel Dockerfile, specifica:
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

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

  • L’immagine SDK da utilizzare. Qui è l’immagine Net 6. Docker la scaricherà quando verrà eseguita la build. La versione dell’SDK è specificata come tag.
  • Dopo, potrebbe essere necessario installare i caratteri perché l’immagine SDK contiene pochissimi caratteri. Inoltre, puoi utilizzare caratteri locali copiati nell’immagine Docker.
  • La directory di lavoro, che è specificata nella riga successiva.
  • Il comando per copiare tutto nel contenitore, pubblicare l’applicazione e specificare il punto di ingresso.

Docker Hub

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

Costruzione ed Esecuzione dell’Applicazione in Docker

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

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

docker build -t user/asposefunction .

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

//esempio
docker push <nome utente>/<nome repository>:tagname

docker push user/asposefunction:latest

Azure

  1. Accedi ad Azure.
  2. Scegli i servizi Azure.
  3. Scegli Function App e crea una funzione.
    Pulsante di creazione funzione Azure
  4. Ripeti le impostazioni di base come nell’immagine qui sotto.
    Impostazioni di creazione funzione Azure
  5. Fai clic su ‘Rivedi + crea’ -> Crea.
  6. Attendi il completamento del deployment.
  7. Fai clic sul pulsante ‘Vai alla risorsa’.
    Pulsante risorsa
  8. Ferma la funzione aspose-cad-docker-example.
    Ferma contenitore
  9. Vai al menu del 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 su 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 webhook in docker
  14. Fai clic sul pulsante di creazione.
  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, SVG.
  3. Fai clic sul pulsante invia.

Altri Esempi

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

Vedi Anche