공개 API REST .Net 5 Google Cloud Run 사용 안 함 Github e Google Cloud Build
ASP.NET Core Web API

Nomeie o projeto e coloque-o dentro da pasta raiz do repositório do Github.

.net 버전을 선택하십시오.
Aqui vale uma observação, a versão que você usar do .net vai influenciar como o arquivo dockerfile deverá ser configurado, se quiser escolher outra versão, fique à vontade, mas será necessário adaptar o dockerfile.

실행 옵션 선택
webapi
.
Execute o projeto, faça um GET no
/weatherforecast
apenas para validar que está tudo funcionando.
Program.cs가 필요하지 않은 적응형 Vamos
Program.cs
필요한 변경 사항으로서의 외관
Program.cs
para ficar como o do código abaixo:using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace webapi
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
var port = Environment.GetEnvironmentVariable("PORT") ?? "8080";
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Development";
if (environment == "Development")
{
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}
else
{
var url = new[]
{
string.Concat("http://0.0.0.0:", port)
};
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>().UseUrls(url); });
}
}
}
}
다른 코드는 중요하지 않습니다. No codigo é importante notar o bloco do other, nele estamos dizendo que quando o ambiente não for "Development"aplicação deverá subir usando o IP
0.0.0.0
, isso é necessário para que a aplicação fique visível fora do do container quado publicarmos no Cloud Run .도커파일
Crie o
Dockerfile
na raiz do repositório. Verifique seu projeto também está na raiz do repositório, se não tiver, mude para a raiz.
다음은 dockerfile과 código abaixo를 연결하는 것입니다.
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app
COPY . ./
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build-env /app/out .
ENV ASPNETCORE_ENVIRONMENT Production
ENTRYPOINT ["dotnet", "webapi.dll"]
Importante alterar a última linha, o nome do arquivo .dll deve ser exatamente igual à DLL principal do seu projeto.
Se seu projeto tiver uma estrutura de pastas diferente do meu, talvez precise alterar outros pontos do dockerfile.
Salve tudo e faça commit.
GCP가 없는 Cloud Run
Se desejar, crie um projeto novo.

Pesquise por cloud run na barra de pesquisa no meio da barra do topo. Abra 또는 Cloud Run 제품. Crie um novo serviço.

새로운 프로젝트를 시작하려면 Cloud Build API를 사용하는 것이 가장 정확합니다.

셀레시오네
Continuously deploy new revisions from a source repository
에 클리크엠Setup With Cluod Build

Importante: eu já tinha minha conta do Github conectada ao GCP, portanto, não consegui tirar prints dessa etapa, mas se for a primeira vez sua, você terá que vincular a sua conta do Github com o GCP.
Selecione o projeto que você quer publicar.

이전에는 Dockerfile을 선택하고 표시했습니다. No campo
Branch
deixe o valor padrão ^main$
para que o Cloud Build seja acionado apenas quando houver commit na branch main do seu repositório, se quiser outra branch, fique à vontade.
Preencha o
Service name
, eu deixei o valor padrão. Escolha uma região, para exemplo deixei a padrão.Na opção de Autoscaling deixei a quantidade mínima de instâncias como zero, isso aumenta o tempo de resposta a um request, mas reduz custos, que no meu caso é mais importante. Se você quiser reduzir o tempo de resposta da sua aplicação deixe pelo menos 1 no mínimo e faça ajustes de acordo com a sua volumetria.
Assim como o mínimo, deixei o máximo em 1 instância, porque novamente o mais importante para mim não é performance e sim custo. Se quiser melhorar a performance avalie aumentar o limite máximo de instâncias, mas lembre-se que isso gerará custos.

Por último, é preciso select as configurações de Ingress e Authentication, para fins educativos deixei aberto para
Allow all traffic
e Allow unauthenticated invocations
. Parações em produção thinke buscar mais informações para restringir o tráfego e as requisições sem autenticação.
선택 사항: Abra o menu
Container, Connections, Security
e faça ajustes no seu container em relação à memória, timeout, requests maximos por container.Para o deploy automático essas configurações são unrelevantes e você poderá alterá-las no futuro.
Crie seu serviço e aguarde.

Quando estiver concluído se tudo deu certo ficará como o da imagem abaixo.

URL이 공개된 GCP에서 이전 이미지로 액세스할 수 없는 쿼드로에서 엔드포인트가 없는 API 액세스 권한이 있습니다
/weatherforecast
.URL: https://democsharpgcpcloudrun-lwy2plkqfa-uc.a.run.app/weatherforecast

결론
Cloud Run에서 처음으로 커밋할 수 있는 주요 저장소는 Github에서 공개할 수 있습니다.
O Cloud Run tem um recurso chamado Revisões, com ele é possível fazer rollback caso uma nova versão quebre algum aspecto da sua API.
Além de permitir que você gerencie o tráfego entre duas ou mais versões, podendo fazer deploy canário. Infelizmente, até o momento não consegui configurar um deploy canário automático, se você souber como faz, coloca nos comentário, por favor.
Obrigado por ter ficado até o fim.
Reference
이 문제에 관하여(공개 API REST .Net 5 Google Cloud Run 사용 안 함 Github e Google Cloud Build), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/felipemsfg/como-publicar-uma-api-rest-net-5-no-google-cloud-run-usando-github-e-google-cloud-build-509p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)