Como Executar a Imagem Docker do Aspose.CAD no Google Cloud

Pré-requisitos

  • O Docker deve estar instalado em seu sistema. Para informações sobre como instalar o Docker no Windows ou Mac, consulte os links na seção “Veja Também”.
  • Visual Studio 2022.
  • Google CLI.
  • O SDK do .NET Core 3.1 é usado no exemplo.
  • Postman

Função do Google Cloud Run

O Cloud Run é um ambiente de computação totalmente gerenciado para implantar e escalar contêineres HTTP sem servidor, sem se preocupar com a provisão de máquinas, configuração de clusters ou escalonamento automático.

  • Sem bloqueio de fornecedor - Como o Cloud Run utiliza contêineres OCI padrão e implementa a API padrão Knative Serving, você pode facilmente transferir seus aplicativos para ambientes on-premises ou qualquer outro ambiente em nuvem.
  • Escalonamento automático rápido - Microserviços implantados no Cloud Run escalam automaticamente com base no número de solicitações recebidas, sem que você precise configurar ou gerenciar um cluster Kubernetes completo. O Cloud Run escala para zero — ou seja, não utiliza recursos — se não houver solicitações.
  • Divisão de tráfego - O Cloud Run permite que você divida o tráfego entre várias revisões, para que você possa realizar implantações graduais, como implantações canário ou implantações blue/green.
  • Domínios personalizados - Você pode configurar o mapeamento de domínio personalizado no Cloud Run e ele provisionará um certificado TLS para seu domínio.
  • Redundância automática - O Cloud Run oferece redundância automática, para que você não precise se preocupar em criar várias instâncias para alta disponibilidade.

O Cloud Run e as Funções do Cloud são serviços totalmente gerenciados que operam na infraestrutura sem servidor do Google Cloud, escalonam automaticamente e lidam com solicitações ou eventos HTTP. No entanto, eles têm algumas diferenças importantes:

  • O Cloud Functions permite que você implante trechos de código (funções) escritos em um conjunto limitado de linguagens de programação, enquanto o Cloud Run permite que você implante imagens de contêiner usando a linguagem de programação de sua escolha.
  • O Cloud Run também suporta o uso de qualquer ferramenta ou biblioteca de sistema de seu aplicativo; o Cloud Functions não permite que você use executáveis personalizados.
  • O Cloud Run oferece uma duração mais longa de tempo limite de solicitações de até 60 minutos, enquanto com o Cloud Functions, o tempo limite das solicitações pode ser definido em até 9 minutos.
  • O Cloud Functions envia apenas uma solicitação por vez para cada instância de função, enquanto o Cloud Run, por padrão, é configurado para enviar várias solicitações simultâneas em cada instância de contêiner. Isso é útil para melhorar a latência e reduzir custos se você estiver esperando grandes volumes.

Criando o projeto da Função do Google Cloud

Para criar o programa da Função do Google Cloud, siga os passos abaixo:

  1. Instale o SDK do .NET Core 3.1.
  2. Instale o pacote de modelo:
    dotnet new -i Google.Cloud.Functions.Templates
  3. Em seguida, crie um diretório para seu projeto e use dotnet new para criar uma nova função HTTP:
    mkdir AsposeFunctions //criar pasta
    cd AsposeFunctions //ir para a pasta AsposeFunctions
    dotnet new gcf-http //criar projeto da Função do Google Cloud com gatilho http
  4. Exemplo de código para arquivo 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. Exemplo de código para converter imagem CAD em arquivo png (Function.cs).
    namespace AsposeFunctions
    {
        public class Function : IHttpFunction
        {
            /// <summary>
            /// A lógica para sua função vai aqui.
            /// </summary>
            /// <param name="context">O contexto HTTP, contendo a solicitação e a resposta.</param>
            /// <returns>Uma tarefa representando a operação assíncrona.</returns>
            public async Task HandleAsync(HttpContext context)
            {
                try
                {
                    //var file = context.Request.Form.Files.FirstOrDefault(); //arquivo de formulário
                    var file = context.Request.Body; //dados binários
                    
                    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. Compile sua função localmente da seguinte forma:
    dotnet run
  7. Uma vez que o servidor esteja em execução, acesse http://localhost:8080 para invocar a função. Pressione Ctrl-C no console para parar o servidor.

Implantar a imagem docker no Google Cloud

  1. Faça login no Google Cloud.
  2. Crie um projeto se ele não existir.
  3. Vá para ‘Artifact Registry’ e crie um repositório.
    Criar Repositório de Artefatos
  4. Selecione o novo repositório no Artifact Registry. Selecionar repositório de artefatos
  5. Clique em ‘INSTRUÇÕES DE CONFIGURAÇÃO’ e copie o comando ‘Configurar Docker’.
    INSTRUÇÕES DE CONFIGURAÇÃO
  6. Adicione uma entrada credHelper do Docker ao arquivo de configuração do Docker, ou crie o arquivo se ele não existir.
    //exemplo
    gcloud auth configure-docker {region}-docker.pkg.dev
    
    gcloud auth configure-docker europe-west1-docker.pkg.dev
  7. Crie um Dockerfile no diretório raiz do projeto e edite o DockerFile conforme na seção Configurando um Dockerfile.
  8. Inicie o Docker Desktop.
  9. Compile a imagem docker com o caminho do repositório em nuvem.
    //exemplo
    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. Envie a imagem para o Google Cloud Artifact Registry
    //exemplo
    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

Criar serviço do Google Cloud Run

  1. Vá para o Cloud Run.
  2. Crie o serviço do Cloud Run.
    Criar serviço do Cloud Run
  3. No campo URL da Imagem do Contêiner, selecione o contêiner de ‘REGISTRO DE ARTEFATOS’.
    URL da Imagem do Contêiner
  4. Verifique outras configurações conforme abaixo.
    Configurações do serviço
  5. Aguarde o término da implantação.
  6. URL do serviço para trabalhar com o aplicativo de conversão.
    URL do serviço

Configurando um Dockerfile

A próxima etapa é editar e configurar o Dockerfile no projeto.

  1. No Dockerfile, especifique:
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"]

O acima é um Dockerfile simples, que contém as seguintes instruções:

  • A imagem SDK a ser usada. Aqui está a imagem do Net Core 3.1. O Docker a baixará quando a construção for executada. A versão do SDK é especificada como uma tag.
  • Depois, você pode precisar instalar fontes porque a imagem do SDK contém muito poucas fontes. Além disso, você pode usar fontes locais copiadas para a imagem do Docker.
  • O diretório de trabalho, que é especificado na linha seguinte.
  • O comando para copiar tudo para o contêiner, publicar a aplicação e especificar o ponto de entrada.

Exemplo de execução

  1. Configurações do Postman.
    Menu de visão geral
  2. Selecione qualquer arquivo DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
  3. Clique no botão enviar.

Mais Exemplos

Para mais exemplos de como você pode usar o Aspose.CAD no Docker, veja os exemplos.

Veja Também.