วิธีการรันภาพด็อกเกอร์ Aspose.CAD ใน Google Cloud
ข้อกำหนดเบื้องต้น
- ต้องติดตั้ง Docker บนระบบของคุณ สำหรับข้อมูลเกี่ยวกับวิธีติดตั้ง Docker บน Windows หรือ Mac ให้ดูที่ลิงก์ในหัวข้อ “ดูเพิ่มเติม”
- Visual Studio 2022
- Google CLI
- NET Core 3.1 SDK ใช้ในตัวอย่าง
- Postman
ฟังก์ชั่น Google Cloud Run
Cloud Run เป็นสภาพแวดล้อมการคอมพิวเตอร์ที่จัดการอย่างเต็มที่สำหรับการปรับใช้และขยายคอนเทนเนอร์ HTTP แบบไม่มีเซิร์ฟเวอร์โดยไม่ต้องกังวลเกี่ยวกับการจัดเตรียมเครื่องจักร การกำหนดค่าโคลน หรือการปรับขยายอัตโนมัติ
- ไม่มีการล็อคผู้จำหน่าย - เนื่องจาก Cloud Run ใช้คอนเทนเนอร์ OCI มาตรฐานและใช้งาน API Knative Serving มาตรฐาน คุณสามารถพอร์ตแอปพลิเคชันของคุณไปยังสถานที่จัดเก็บหรือคลาวด์อื่นได้อย่างง่ายดาย
- การปรับขนาดอัตโนมัติที่รวดเร็ว - ไมโครเซอร์วิสที่ปรับใช้ใน Cloud Run จะปรับขนาดโดยอัตโนมัติตามจำนวนคำขอที่เข้าโดยไม่ต้องกำหนดค่าหรือติดตั้งคลัสเตอร์ Kubernetes ที่สมบูรณ์ Cloud Run สามารถปรับขนาดเป็นศูนย์นั่นคือไม่ใช้ทรัพยากรหากไม่มีคำขอ
- แบ่งการจราจร - Cloud Run ช่วยให้คุณแบ่งการจราจรระหว่างการแก้ไขหลายรายการ ดังนั้นคุณจึงสามารถดำเนินการปรับปรุงแบบค่อยเป็นค่อยไปเช่นการปรับใช้แทนที่แบบแคนารีหรือการปรับใช้สีน้ำเงิน/สีเขียว
- โดเมนที่กำหนดเอง - คุณสามารถตั้งค่าการแมพโดเมนที่กำหนดเองใน Cloud Run และมันจะจัดเตรียมใบรับรอง TLS สำหรับโดเมนของคุณ
- ความซ้ำซ้อนอัตโนมัติ - Cloud Run มอบความซ้ำซ้อนอัตโนมัติทำให้คุณไม่ต้องกังวลเกี่ยวกับการสร้างหลายอินสแตนซ์เพื่อความพร้อมใช้งานสูง
Cloud Run และ Cloud Functions เป็นบริการที่จัดการอย่างเต็มที่ซึ่งทำงานบนโครงสร้างพื้นฐานแบบไม่มีเซิร์ฟเวอร์ของ Google Cloud มีการปรับขนาดอัตโนมัติและจัดการคำขอ HTTP หรือเหตุการณ์ แม้ว่าจะมีความแตกต่างที่สำคัญบางประการ:
- Cloud Functions ช่วยให้คุณสามารถปรับใช้โค้ด (ฟังก์ชัน) ที่เขียนในชุดภาษาการเขียนโปรแกรมที่จำกัด ในขณะที่ Cloud Run ช่วยให้คุณสามารถปรับใช้ภาพคอนเทนเนอร์โดยใช้ภาษาที่คุณเลือก
- Cloud Run ยังสนับสนุนการใช้เครื่องมือหรือตัวอย่างระบบจากแอปพลิเคชันของคุณในขณะที่ Cloud Functions ไม่อนุญาตให้คุณใช้ Executable ที่กำหนดเอง
- Cloud Run เสนอระยะเวลาหมดอายุคำขอที่ยาวนานถึง 60 นาที ในขณะที่ Cloud Functions หมดเวลาคำขอสามารถตั้งค่าได้สูงสุดที่ 9 นาที
- Cloud Functions จะส่งคำขอเพียงครั้งละหนึ่งครั้งไปยังแต่ละอินสแตนซ์ฟังก์ชันในขณะที่ค่าเริ่มต้น Cloud Run ถูกกำหนดให้ส่งคำขอพร้อมกันหลายรายการในแต่ละอินสแตนซ์คอนเทนเนอร์ ซึ่งช่วยปรับปรุงเวลาการตอบสนองและลดต้นทุนหากคุณคาดว่ามีปริมาณมาก
การสร้างโปรเจกต์ Google Cloud Function
ในการสร้างโปรแกรม Google Cloud Function ให้ทำตามขั้นตอนด้านล่าง:
- ติดตั้ง .NET Core SDK 3.1
- ติดตั้งแพ็คเกจเทมเพลต:
dotnet new -i Google.Cloud.Functions.Templates
- ถัดไป ให้สร้างไดเร็กทอรีสำหรับโปรเจกต์ของคุณและใช้ dotnet new เพื่อสร้างฟังก์ชัน HTTP ใหม่:
mkdir AsposeFunctions //สร้างโฟลเดอร์ cd AsposeFunctions //ไปยังโฟลเดอร์ AsposeFunctions dotnet new gcf-http //สร้างโปรเจกต์ Google Cloud Function ด้วยการเรียก HTTP
จะสร้าง AsposeFunctions.csproj และ Function.cs ในไดเร็กทอรีปัจจุบัน เปิด Function.cs เพื่อตรวจสอบโค้ดและให้ข้อความที่กำหนดเองหากคุณต้องการ - ตัวอย่างโค้ดสำหรับไฟล์ csproj (AsposeFunctions.csproj)
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Aspose.CAD" Version="22.7.0" /> <PackageReference Include="Google.Cloud.Functions.Hosting" Version="1.0.0" /> </ItemGroup> </Project>
- ตัวอย่างโค้ดสำหรับการแปลงภาพ CAD เป็นไฟล์ PNG (Function.cs)
namespace AsposeFunctions { public class Function : IHttpFunction { /// <summary> /// ตรรกะสำหรับฟังก์ชันของคุณอยู่ที่นี่ /// </summary> /// <param name="context">HTTP context ซึ่งมีคำขอและการตอบสนอง</param> /// <returns>งานที่เป็นตัวแทนของการทำงานแบบอะซิงโครนัส</returns> public async Task HandleAsync(HttpContext context) { try { //var file = context.Request.Form.Files.FirstOrDefault(); //ไฟล์ฟอร์ม var file = context.Request.Body; //ข้อมูลไบนารี var msFile = new MemoryStream(); await file.CopyToAsync(msFile); msFile.Seek(0, SeekOrigin.Begin); using (var image = (CadImage)Image.Load(msFile)) { var ms = new MemoryStream(); image.Save(ms, new PngOptions()); ms.Seek(0, System.IO.SeekOrigin.Begin); context.Response.Headers.Add("Content-Type", "image/png"); context.Response.Headers.Add("Content-Disposition", "attachment;filename=result.png"); await context.Response.Body.WriteAsync(ms.ToArray(), 0, ms.ToArray().Length); } } catch (Exception e) { await context.Response.WriteAsync(e.Message); } } } }
- สร้างฟังก์ชันของคุณในเครื่องตามลำดับต่อไปนี้:
dotnet run
- เมื่อเซิร์ฟเวอร์ทำงานแล้ว ให้เรียกดูไปที่ http://localhost:8080 เพื่อติดต่อฟังก์ชัน กด Ctrl-C ในคอนโซลเพื่อหยุดเซิร์ฟเวอร์
ปรับใช้ภาพด็อกเกอร์ไปยัง Google Cloud
- ล็อกอิน Google Cloud
- สร้างโปรเจกต์หากยังไม่มี
- ไปที่ ‘Artifact Registry’ และสร้างที่เก็บ
- เลือกที่เก็บใหม่ใน Artifact Registry
- คลิก ‘SETUP INSTRUCTION’ และคัดลอกคำสั่ง ‘Configure Docker’
- เพิ่มรายการ Docker credHelper ลงในไฟล์กำหนดค่าของ Docker หรือสร้างไฟล์หากยังไม่มี
//ตัวอย่าง gcloud auth configure-docker {region}-docker.pkg.dev gcloud auth configure-docker europe-west1-docker.pkg.dev
- สร้าง Dockerfile ในไดเร็กทอรีรากของโปรเจกต์และแก้ไข DockerFile ตามส่วน การตั้งค่า Dockerfile
- เริ่ม Docker Desktop
- สร้างภาพด็อกเกอร์ด้วยเส้นทางที่เก็บในคลาวด์
//ตัวอย่าง docker build -t {region}-docker.pkg.dev/{project-name}/{repository-name}/{any-name}:{tag} . docker build -t europe-west1-docker.pkg.dev/test/aspose/function:latest .
- ส่งภาพไปยัง Google Cloud Artifact Registry
//ตัวอย่าง docker build -t {region}-docker.pkg.dev/{project-name}/{repository-name}/{any-name}:{tag} . docker push europe-west1-docker.pkg.dev/test/aspose-cloud/function:latest
สร้างบริการ Google Cloud Run
- ไปที่ Cloud Run
- สร้างบริการ Cloud Run
- ในช่อง URL รูปภาพคอนเทนเนอร์ ให้เลือกคอนเทนเนอร์จาก ‘ARTIFACT REGISTRY’
- ตรวจสอบการตั้งค่าอื่น ๆ ตามภาพด้านล่าง
- รอการปรับใช้ให้เสร็จสิ้น
- URL บริการในการทำงานกับแอปพลิเคชันการแปลง
การตั้งค่า Dockerfile
ขั้นตอนถัดไปคือการแก้ไขการตั้งค่า Dockerfile ในโปรเจกต์
- ใน Dockerfile ให้ระบุ:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /build
COPY . .
RUN dotnet restore
RUN dotnet publish -c Release -o /app
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS final
WORKDIR /app
COPY --from=build /app .
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 8080
ENV ASPNETCORE_URLS=http://*:8080
ENV ASPNETCORE_ENVIRONMENT=Release
ENV TAPTAKE_SEED=false
ENTRYPOINT ["dotnet", "AsposeFunctions.dll"]
ด้านบนเป็น Dockerfile ที่เรียบง่าย ซึ่งประกอบด้วยคำสั่งดังต่อไปนี้:
- หา SDK image ที่จะใช้ ที่นี่คือภาพ Net Core 3.1 Docker จะดาวน์โหลดเมื่อการสร้างถูกเรียกใช้งาน ใช้ SDK จะถูกระบุเป็นแท็ก
- หลังจากนั้นคุณอาจต้องติดตั้งฟอนต์ เนื่องจาก SDK image มีฟอนต์น้อยมาก นอกจากนี้คุณยังสามารถใช้ฟอนต์ท้องถิ่นที่คัดลอกไปยังภาพด็อกเกอร์ได้
- ไดเร็กทอรีทำงานซึ่งระบุในบรรทัดถัดไป
- คำสั่งในการคัดลอกทุกอย่างไปยังคอนเทนเนอร์ ตีพิมพ์แอปพลิเคชันและระบุจุดเริ่มต้น
ตัวอย่างการดำเนินการ
- การตั้งค่า Postman.
- เลือกไฟล์ DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG ใด ๆ
- คลิกปุ่มส่ง
ตัวอย่างเพิ่มเติม
สำหรับตัวอย่างเพิ่มเติมเกี่ยวกับวิธีการใช้ Aspose.CAD ใน Docker โปรดดูที่ ตัวอย่าง