Cara Menjalankan Gambar Docker Aspose.CAD di Google Cloud

Prasyarat

  • Docker harus diinstal di sistem Anda. Untuk informasi mengenai cara menginstal Docker di Windows atau Mac, silakan merujuk ke tautan di bagian “Lihat Juga”.
  • Visual Studio 2022.
  • Google CLI.
  • SDK .NET Core 3.1 digunakan dalam contoh ini.
  • Postman

Fungsi Google Cloud Run

Cloud Run adalah lingkungan komputasi yang sepenuhnya terkelola untuk menerapkan dan mengskalakan kontainer HTTP tanpa server tanpa khawatir tentang penyediaan mesin, mengonfigurasi kluster, atau penskalaan otomatis.

  • Tidak ada kunci vendor - Karena Cloud Run mengambil kontainer OCI standar dan mengimplementasikan API Penyajian Knative standar, Anda dapat dengan mudah memindahkan aplikasi Anda ke lingkungan di tempat atau cloud lainnya.
  • Penskalaan otomatis yang cepat - Layanan mikro yang diterapkan di Cloud Run secara otomatis diukur berdasarkan jumlah permintaan yang masuk, tanpa Anda harus mengonfigurasi atau mengelola kluster Kubernetes yang lengkap. Cloud Run dapat diskalakan hingga nol—yaitu, tidak menggunakan sumber daya—jika tidak ada permintaan.
  • Pembagian lalu lintas - Cloud Run memungkinkan Anda untuk membagi lalu lintas antara beberapa revisi, sehingga Anda dapat melakukan peluncuran bertahap seperti peluncuran canary atau peluncuran biru/hijau.
  • Domain kustom - Anda dapat mengatur pemetaan domain kustom di Cloud Run dan akan menyediakan sertifikat TLS untuk domain Anda.
  • Redundansi otomatis - Cloud Run menawarkan redundansi otomatis sehingga Anda tidak perlu khawatir tentang membuat beberapa instance untuk ketersediaan tinggi.

Cloud Run dan Cloud Functions adalah layanan yang sepenuhnya dikelola yang berjalan di infrastruktur tanpa server Google Cloud, secara otomatis mengskalakan, dan menangani permintaan HTTP atau peristiwa. Namun, mereka memiliki beberapa perbedaan penting:

  • Cloud Functions memungkinkan Anda mengirimkan cuplikan kode (fungsi) yang ditulis dalam seperangkat bahasa pemrograman terbatas, sementara Cloud Run memungkinkan Anda menerapkan gambar kontainer menggunakan bahasa pemrograman yang Anda pilih.
  • Cloud Run juga mendukung penggunaan alat atau pustaka sistem apa pun dari aplikasi Anda; Cloud Functions tidak memungkinkan Anda menggunakan eksekusi kustom.
  • Cloud Run menawarkan durasi timeout permintaan yang lebih lama hingga 60 menit, sementara dengan Cloud Functions waktu tunggu permintaan dapat diatur hingga 9 menit.
  • Cloud Functions hanya mengirim satu permintaan pada satu waktu ke setiap instance fungsi, sementara secara default Cloud Run dikonfigurasi untuk mengirim beberapa permintaan bersamaan di setiap instance kontainer. Ini membantu meningkatkan latensi dan mengurangi biaya jika Anda mengharapkan volume besar.

Membuat proyek Fungsi Google Cloud

Untuk membuat program Fungsi Google Cloud, ikuti langkah-langkah di bawah ini:

  1. Instal SDK .NET Core 3.1.
  2. Instal paket template:
    dotnet new -i Google.Cloud.Functions.Templates
  3. Selanjutnya, buat direktori untuk proyek Anda, dan gunakan dotnet new untuk membuat fungsi HTTP baru:
    mkdir AsposeFunctions //buat folder
    cd AsposeFunctions //masuk ke folder AsposeFunctions
    dotnet new gcf-http //buat proyek Google Cloud Function dengan pemicu http
  4. Contoh kode untuk file 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>
  5. Contoh kode untuk mengonversi gambar cad ke file png (Function.cs).
    namespace AsposeFunctions
    {
        public class Function : IHttpFunction
        {
            /// <summary>
            /// Logika untuk fungsi Anda dituliskan di sini.
            /// </summary>
            /// <param name="context">Konteks HTTP, yang berisi permintaan dan respons.</param>
            /// <returns>Tugas yang mewakili operasi asinkron.</returns>
            public async Task HandleAsync(HttpContext context)
            {
                try
                {
                    //var file = context.Request.Form.Files.FirstOrDefault(); //form file
                    var file = context.Request.Body; //data biner
                    
                    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);
                }
            }
        }
    }
  6. Bangun fungsi Anda secara lokal sebagai berikut:
    dotnet run
  7. Setelah server berjalan, telusuri ke http://localhost:8080 untuk memanggil fungsi. Tekan Ctrl-C di konsol untuk menghentikan server.

Terapkan gambar docker ke Google Cloud

  1. Masuk ke Google Cloud.
  2. Buat proyek jika belum ada.
  3. Pergi ke ‘Artifact Registry’ dan buat repositori.
    Buat Repositori Artefak
  4. Pilih repositori baru di Artifact Registry. Pilih repositori artefak
  5. Klik ‘INSTRUKSI SETUP’ dan salin perintah ‘Konfigurasi Docker’.
    INSTRUKSI SETUP
  6. Tambahkan entri credHelper Docker ke file konfigurasi Docker, atau buat file jika belum ada.
    //contoh
    gcloud auth configure-docker {region}-docker.pkg.dev
    
    gcloud auth configure-docker europe-west1-docker.pkg.dev
  7. Buat file Dockerfile di direktori root proyek dan edit DockerFile seperti di bagian Mengonfigurasi Dockerfile.
  8. Mulai Docker Desktop.
  9. Bangun gambar docker dengan jalur repositori cloud.
    //contoh
    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 .
  10. Dorong gambar ke Google Cloud Artifact Registry
    //contoh
    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

Buat layanan Google Cloud Run

  1. Pergi ke Cloud Run.
  2. Buat layanan Cloud Run.
    Buat layanan Cloud Run
  3. Di field URL Gambar Kontainer, pilih kontainer dari ‘ARTIFAK REGISTRY’.
    URL Gambar Kontainer
  4. Periksa pengaturan lainnya seperti di bawah ini.
    Pengaturan layanan
  5. Tunggu hingga penyebaran selesai.
  6. URL layanan untuk berfungsi dengan aplikasi konversi.
    Url layanan

Mengonfigurasi Dockerfile

Langkah selanjutnya adalah mengedit konfigurasi Dockerfile di proyek.

  1. Di Dockerfile, tentukan:
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"]

Di atas adalah Dockerfile sederhana, yang berisi instruksi berikut:

  • Gambar SDK yang akan digunakan. Di sini adalah gambar Net Core 3.1. Docker akan mengunduhnya saat build dijalankan. Versi SDK ditentukan sebagai tag.
  • Setelah itu, Anda mungkin perlu menginstal Font karena gambar SDK berisi sangat sedikit font. Juga, Anda dapat menggunakan font lokal yang disalin ke gambar docker.
  • Direktori kerja, yang ditentukan di baris berikutnya.
  • Perintah untuk menyalin semuanya ke dalam kontainer, menerbitkan aplikasi, dan menentukan titik masuk.

Contoh Eksekusi

  1. Pengaturan Postman.
    Menu Ikhtisar
  2. Pilih file DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
  3. Klik tombol kirim.

Lebih Banyak Contoh

Untuk lebih banyak contoh tentang bagaimana Anda dapat menggunakan Aspose.CAD di Docker, lihat contoh.

Lihat Juga.