Hoe de Aspose.CAD Docker-image uit te voeren in Azure Function
Vereisten
- Docker moet op uw systeem zijn geïnstalleerd. Voor informatie over het installeren van Docker op Windows of Mac, verwijst u naar de links in de sectie “Zie ook”.
- Visual Studio 2022.
- NET 6 SDK wordt gebruikt in het voorbeeld.
- Postman
Azure Function
In dit voorbeeld maakt u een eenvoudige conversiefunctie die een CAD-bestand omzet en opslaat als een afbeelding. De applicatie kan vervolgens in Docker worden gebouwd en uitgevoerd in Azure Function.
De Azure Function maken
Om het Azure Function-programma te maken, volgt u de onderstaande stappen:
- Zodra Docker is geïnstalleerd, moet u ervoor zorgen dat het Linux-containers gebruikt (standaard). Indien nodig, selecteer de optie ‘Schakel over naar Linux-containers’ in het menu van Docker Desktop.
- Maak in Visual Studio een NET 6 Azure Function.
- Aanvullende informatie.
- Installeer de nieuwste versie van Aspose.CAD van NuGet.
- Aangezien de applicatie op Linux wordt uitgevoerd, moet u mogelijk extra lettertypen installeren. U kunt de ttf-mscorefonts-installer gebruiken.
- Wanneer alle vereiste afhankelijkheden zijn toegevoegd, schrijft u een eenvoudig programma dat een ellips maakt en deze opslaat als een afbeelding:
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("C# HTTP-triggerfunctie heeft een verzoek verwerkt.");
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);
}
}
}
Een Dockerfile configureren
De volgende stap is om de Dockerfile in de rootprojectmap te maken en te configureren.
- Maak de Dockerfile en plaats deze naast het oplossingbestand van uw applicatie. Houd deze bestandsnaam zonder extensie (de standaard).
- Specificeer in de Dockerfile:
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
Bovenstaande is een eenvoudige Dockerfile, die de volgende instructies bevat:
- De SDK-image die moet worden gebruikt. Hier is het de Net 6-image. Docker zal deze downloaden wanneer de build wordt uitgevoerd. De versie van de SDK wordt gespecificeerd als een tag.
- Daarna moet u mogelijk lettertypen installeren omdat de SDK-image zeer weinig lettertypen bevat. U kunt ook lokale lettertypen gebruiken die naar de docker-image zijn gekopieerd.
- 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 toegangspunt op te geven.
Docker Hub
- Log in op Docker Hub
- Maak een publieke repository
De applicatie bouwen en uitvoeren in Docker
Nu kan de applicatie in Docker worden gebouwd en uitgevoerd. Open uw favoriete opdrachtprompt, wijzig de map naar de map met de applicatie (de map waar het oplossingbestand en de Dockerfile zijn geplaatst) en voer de volgende opdracht uit:
//voorbeeld
docker build -t <gebruikersnaam>/<repository-naam> .
docker build -t user/asposefunction .
De eerste keer dat u deze opdracht uitvoert, kan het langer duren omdat Docker de nodige images moet downloaden. Nadat de vorige opdracht is voltooid, voert u de volgende opdracht uit om de image naar Docker Hub te duwen:
//voorbeeld
docker push <gebruikersnaam>/<repository-naam>:tagname
docker push user/asposefunction:latest
Azure
- Log in op Azure.
- Kies Azure-services.
- Kies Function App en maak een functie.
- Herhaal de basisinstellingen zoals in de afbeelding hieronder.
- Klik op ‘Review + create’ -> Maak.
- Wacht tot de implementatie is voltooid.
- Klik op de knop ‘Ga naar resource’.
- Stop de aspose-cad-docker-example-functie.
- Ga naar het menu implementatiecentrum en maak de juiste instellingen.
- Sla instellingen op
- Kopieer de Webhook-URL vanuit de instellingen van het implementatiecentrum.
- Ga naar Docker Hub, selecteer uw repository en selecteer webhooks.
- Plak de ‘Webhook-url’ van Azure in de Docker Hub-webhook-URL en stel de naam in.
- Klik op de knop Aanmaken.
- Ga terug naar het overzicht van de azure-functie en start de container.
Voorbeeld van uitvoering
- Postman-instellingen.
- Selecteer elk DXF-, DWG-, DGN-, DWF-, DWFX-, IFC-, STL-, DWT-, IGES-, PLT-, CF2-, OBJ-, HPGL-, IGS-, PCL-, FBX-, PDF-, SVG-bestand.
- Klik op de verzendknop.
Meer Voorbeelden
Voor meer voorbeelden van hoe u Aspose.CAD in Docker kunt gebruiken, zie de voorbeelden.