Jak spustit obraz Aspose.CAD Docker v Google Cloud

Předpoklady

  • Docker musí být nainstalován na vašem systému. Pro informace o instalaci Dockeru na Windows nebo Mac se odkazujte na odkazy v sekci „Viz také“.
  • Visual Studio 2022.
  • Google CLI.
  • V příkladu je použita SDK .NET Core 3.1.
  • Postman

Funkce Google Cloud Run

Cloud Run je plně spravované výpočetní prostředí pro nasazování a škálování bezprostředních HTTP kontejnerů bez starostí o provozování strojů, konfiguraci clusterů nebo automatické škálování.

  • Žádný zámek dodavatele - Protože Cloud Run bere standardní OCI kontejnery a implementuje standardní Knative Serving API, můžete snadno přenést své aplikace na vlastní prostředí nebo jakýkoli jiný cloudový prostředí.
  • Rychlé automatické škálování - Mikroslužby nasazené v Cloud Run se automaticky škálují v závislosti na počtu příchozích požadavků, aniž byste museli konfigurovat nebo spravovat plně vybavený Kubernetes cluster.
  • Rozdělení provozu - Cloud Run umožňuje rozdělit provoz mezi několik revizí, takže můžete provádět postupné nasazení, jako jsou kanárová nasazení nebo modro/zelená nasazení.
  • Vlastní domény - Můžete nastavit mapování vlastní domény v Cloud Run a systém automaticky zprovozní certifikát TLS pro vaši doménu.
  • Automatická redundance - Cloud Run nabízí automatickou redundanci, takže se nemusíte starat o vytváření více instancí pro vysokou dostupnost.

Cloud Run a Cloud Functions jsou oba plně řízené služby běžící na serverless infrastruktuře Google Cloud, které se škálují automaticky a zpracovávají HTTP požadavky nebo události. Nicméně existují některé důležité rozdíly:

  • Cloud Functions vám umožňuje nasadit úryvky kódu (funkce) napsané v omezeném souboru programovacích jazyků, zatímco Cloud Run umožňuje nasazení kontejnerových obrazů pomocí programovacího jazyka vašeho výběru.
  • Cloud Run také podporuje použití jakéhokoli nástroje nebo systémové knihovny z vaší aplikace; Cloud Functions vám nedovoluje používat vlastní spustitelné soubory.
  • Cloud Run nabízí delší dobu vypršení čekání na požadavky až 60 minut, zatímco s Cloud Functions lze doba vypršení požadavků nastavit až na 9 minut.
  • Cloud Functions posílá pouze jeden požadavek najednou na každou instanci funkce, zatímco ve výchozím nastavení Cloud Run je konfigurován tak, aby posílal více souběžných požadavků na každou instanci kontejneru. To pomáhá zlepšit latenci a snížit náklady, pokud očekáváte velké objemy.

Vytvoření projektu funkce Google Cloud

K vytvoření programu funkce Google Cloud postupujte podle následujících kroků:

  1. Nainstalujte .NET Core SDK 3.1.
  2. Nainstalujte šablonový balíček:
    dotnet new -i Google.Cloud.Functions.Templates
  3. Dále vytvořte adresář pro váš projekt a použijte příkaz dotnet new ke vytvoření nového HTTP funkce:
    mkdir AsposeFunctions //vytvořit složku
    cd AsposeFunctions //přejít do složky AsposeFunctions
    dotnet new gcf-http //vytvořit projekt funkce Google Cloud s HTTP spouštěčem
  4. Příklad kódu pro soubor 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. Příklad kódu pro převod obrázku cad na soubor png (Function.cs).
    namespace AsposeFunctions
    {
        public class Function : IHttpFunction
        {
            /// <summary>
            /// Logika vaší funkce zde.
            /// </summary>
            /// <param name="context">HTTP kontext obsahující požadavek a odpověď.</param>
            /// <returns>Úloha představující asynchronní operaci.</returns>
            public async Task HandleAsync(HttpContext context)
            {
                try
                {
                    //var file = context.Request.Form.Files.FirstOrDefault(); //formulářový soubor
                    var file = context.Request.Body; //binární data
                    
                    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. Spusťte vaši funkci lokálně následovně:
    dotnet run
  7. Jakmile je server spuštěn, přejděte na http://localhost:8080 k volání funkce. Stiskněte Ctrl-C v konzoli pro zastavení serveru.

Nasazení obrazu dockeru do Google Cloud

  1. Přihlaste se do Google Cloud.
  2. Vytvořte projekt, pokud neexistuje.
  3. Přejděte do „Artifact Registry“ a vytvořte repozitář.
    Vytvoření úložiště Artifact
  4. Vyberte nový repozitář v Artefaktového registru. Vyberte artefaktové úložiště
  5. Klepněte na „SADA PŘÍKAZŮ“ a zkopírujte příkaz „Konfigurovat Docker“.
    SADA PŘÍKAZŮ
  6. Přidejte záznam credHelper pro Docker do konfiguračního souboru Dockeru nebo vytvořte soubor, pokud neexistuje.
    //příklad
    gcloud auth configure-docker {region}-docker.pkg.dev
    
    gcloud auth configure-docker europe-west1-docker.pkg.dev
  7. Vytvořte ve složce kořenového adresáře projektu soubor Dockerfile a upravte jej podle části Konfigurace Dockerfile.
  8. Spusťte Docker Desktop.
  9. Sestavte dockerový obraz s cestou k cloudovému repozitáři.
    //příklad
    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. Odešlete obraz do úložiště Google Cloud Artifact Registry
    //příklad
    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

Vytvoření služby Google Cloud Run

  1. Přejděte do služby Cloud Run.
  2. Vytvořte službu Cloud Run.
    Vytvoření služby Cloud Run
  3. V poli URL obrázku kontejneru vyberte kontejner z „ARTIFAKTOVÉHO REGISTRU“.
    URL obrázku kontejneru
  4. Zkontrolujte další nastavení níže.
    Nastavení služby
  5. Počkejte na dokončení nasazení.
  6. URL služby k práci s aplikací konverze.
    URL služby

Konfigurace Dockerfile

Dalším krokem je upravit konfiguraci Dockerfile v projektu.

  1. V souboru Dockerfile upřesněte:
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"]

Výše uvedený je jednoduchý Dockerfile, který obsahuje následující instrukce:

  • Obrázek SDK, který má být použit. Zde je to obraz Net Core 3.1. Když se spustí sestavení, Docker jej stáhne. Verze SDK je zadána jako značka.
  • Poté můžete potřebovat nainstalovat písma, protože obraz SDK obsahuje velmi málo písem. Můžete také použít lokální písma zkopírovaná do dockerového obrazu.
  • Pracovní adresář, který je specifikován v následujícím řádku.
  • Příkaz k zkopírování všeho do kontejneru, publikaci aplikace a specifikaci vstupního bodu.

Příklad provedení

  1. Nastavení Postmanu.
    Přehled menu
  2. Vyberte libovolný soubor DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
  3. Klepněte na tlačítko odeslat.

Další příklady

Pro další ukázky, jak můžete použít Aspose.CAD v Dockeru, navštivte příklady.

Viz Také.