.NET 5.0 on Google Cloud

A unified .NET.NET 5.0 was released just a few days ago with many new features, improvements, C# 9 support, F# 5 support, and more. .NET 5.0 is the first release of the unified .NET vision that was announced last year. Going forward, there will be just one .NET targeting Windows, Linux, macOS, and more. Google Cloud already has support for different versions of .NET. You can run traditional Windows based .NET apps on Windows Servers in Compute Engine or on Windows Containers in Google Kubernetes Engine (GKE). For modern Linux based containerized .NET apps, there’s more choice with App Engine (Flex), GKE and my favorite Cloud Run. Not to mention, the .NET Core 3.1 support in Cloud Functions is currently in preview for serverless .NET functions. In the rest of the blog post, I want to show you how to deploy .NET 5.0 to Cloud Run. Cloud Run makes it really easy to deploy and scale containerized apps on a fully managed platform..NET 5.0First, make sure you have the latest .NET 5.0 installed:> dotnet –version5.0.100Let’s follow the ASP.NET tutorial to create a web app with ASP.NET framework. Create a simple web app with plain HTTP support:> dotnet new webapp -o webapp-cloudrun –no-httpsCloud Run expects for the app to listen on a PORT environment variable. Change CreateHostBuilder function of Program.cs file to do that:Also, let’s change the default welcome message in Index.cshtml file to display a welcome message like this:<h1 class=”display-4″>Welcome to .NET 5.0 on Google Cloud</h1>After the changes, you can build and run the app locally. It should start a server listening on port 8080:> dotnet runinfo: Microsoft.Hosting.Lifetime[0]      Now listening on: http://0.0.0.0:8080Containerize .NET 5.0 To containerize the app, we will create a Dockerfile. One thing to keep in mind is that with the release of .NET 5.0, all Docker tags for .NET Core 2.1/3.1 and .NET 5.0 is published to one set of unified Docker repositories (see 2375). The names of these repositories have been changed from the originals to no longer include “core” in the name. Here’s the Dockerfile for our app using the new dotnet/sdk and dotnet/aspnet base images with 5.0 versions:FROM mcr.microsoft.com/dotnet/sdk:5.0-alpine AS buildWORKDIR /appCOPY *.csproj ./RUN dotnet restoreCOPY . ./WORKDIR /appRUN dotnet publish -c Release -o outFROM mcr.microsoft.com/dotnet/aspnet:5.0-alpine AS runtimeWORKDIR /appCOPY –from=build /app/out ./ENTRYPOINT [“dotnet”, “webapp-cloudrun.dll”]Build and save the Docker image to Google Container Registry with Cloud Build:> gcloud builds submit –tag gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet5Deploy to Cloud RunFinally, deploy to Cloud Run:> gcloud run deploy –image gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet5         –platform managed         –allow-unauthenticatedIn a few seconds, you should see the service deployed:✓ Deploying… Done.✓ Creating Revision…✓ Routing traffic…✓ Setting IAM Policy…Done.Service [hello-dotnet5] revision [hello-dotnet5-00002-tux] has been deployed and is serving 100 percent of traffic.Service URL: https://hello-dotnet5-dhmnie7yqa-ew.a.run.appAnd visiting the service URL will display our page:Of course .NET support is not limited to Cloud Run. Check out how we support .NET on Google Cloud.  Related ArticleStreamlining Cloud Run development with Cloud CodeCloud Run is now integrated with Cloud Code, making it easier to create new Cloud Run services from your favorite IDE.Read Article
Quelle: Google Cloud Platform

Published by