如何在 Azure Function 中运行 Aspose.CAD Docker 镜像
前提条件
- 必须在您的系统上安装 Docker。有关如何在 Windows 或 Mac 上安装 Docker 的信息,请参阅“另请参阅”部分中的链接。
- Visual Studio 2022。
- 示例中使用了 NET 6 SDK。
- Postman
Azure Function
在本示例中,您将创建一个简单的转换函数,该函数将 CAD 文件转换并保存为图像。然后可以在 Docker 中构建该应用程序并在 Azure Function 中运行。
创建 Azure Function
要创建 Azure Function 程序,请按照以下步骤操作:
- 安装 Docker 后,请确保它使用的是 Linux 容器(默认)。如果需要,请从 Docker Desktop 菜单中选择切换到 Linux 容器选项。
- 在 Visual Studio 中创建一个 NET 6 Azure Function。
- 附加信息。
- 从 NuGet 安装最新版本的 Aspose.CAD。
- 由于应用程序将在 Linux 上运行,您可能需要安装其他字体。您可以选择 ttf-mscorefonts-installer。
- 当所有必需的依赖项添加后,编写一个简单的程序,该程序创建一个椭圆并将其保存为图像:
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 触发器函数处理了请求。");
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);
}
}
}
配置 Dockerfile
下一步是在根项目文件夹中创建和配置 Dockerfile。
- 创建 Dockerfile 并将其放置在您的应用程序解决方案文件旁边。保持此文件名不带扩展名(默认)。
- 在 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
上述是一个简单的 Dockerfile,包含以下指令:
- 要使用的 SDK 镜像。这里是 NET 6 镜像。Docker 在运行构建时会下载它。SDK 的版本作为标签指定。
- 之后,您可能需要安装字体,因为 SDK 镜像中包含的字体非常少。此外,您还可以使用复制到 Docker 镜像的本地字体。
- 工作目录,在下一行中指定。
- 复制所有内容到容器、发布应用程序并指定入口点的命令。
Docker Hub
- 登录 Docker Hub
- 创建公共存储库
在 Docker 中构建和运行应用程序
现在可以在 Docker 中构建和运行应用程序。打开您最喜欢的命令提示符,将目录更改为包含应用程序的文件夹(解决方案文件和 Dockerfile 所在的文件夹),然后运行以下命令:
//示例
docker build -t <用户名称>/<存储库名称> .
docker build -t user/asposefunction .
第一次运行此命令时,它可能需要更长时间,因为 Docker 需要下载所需的镜像。前一个命令完成后,运行以下命令将镜像推送到 Docker Hub:
//示例
docker push <用户名称>/<存储库名称>:标签名
docker push user/asposefunction:latest
Azure
- 登录 Azure。
- 选择 Azure 服务。
- 选择 Function App 并创建一个函数。
- 重复基本设置,如下图所示。
- 点击“审核 + 创建” -> 创建。
- 等待部署完成。
- 点击“转到资源”按钮。
- 停止 aspose-cad-docker-example 函数。
- 转到部署中心菜单并进行相应设置。
- 保存设置
- 从部署中心设置中复制 Webhook URL。
- 转到 Docker Hub,选择您的存储库并选择 webhooks。
- 将 Azure 的“Webhook URL”粘贴到 Docker Hub webhook URL 中并设置名称。
- 点击创建按钮。
- 返回概览 Azure 函数并启动容器。
执行示例
- Postman 设置。
- 选择任何 DXF、DWG、DGN、DWF、DWFX、IFC、STL、DWT、IGES、PLT、CF2、OBJ、HPGL、IGS、PCL、FBX、PDF、SVG 文件。
- 点击发送按钮。
更多示例
有关如何在 Docker 中使用 Aspose.CAD 的更多示例,请参阅 示例。