O ambiente de execução do .NET é a pilha de software responsável por instalar o código e as dependências do aplicativo e executá-lo no ambiente flexível.
A versão 6 do .NET e versões mais recentes são criadas usando
buildpacks, o que exige que você escolha
um sistema operacional no arquivo app.yaml
. Por exemplo, para usar
o .NET 8, especifique o
Ubuntu 22 como o sistema operacional.
Para ver a lista completa de versões compatíveis do .NET e a versão correspondente do Ubuntu, consulte a Programação de suporte ao ambiente de execução.
Escolher uma versão do .NET
Novas versões de ambiente de execução
Para o .NET versão 6 e versões posteriores, é preciso incluir as configurações runtime_config
e operating_system
no arquivo app.yaml
para especificar um sistema operacional.
Para usar a nova versão, você precisa:
Atualize o arquivo do projeto.
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> <ItemGroup> <None Update="app.yaml"> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </None> </ItemGroup> </Project>
Para mais informações, consulte Migrar do ASP.NET Core 3.1 para o 6.0.
Instalar a versão da CLI gcloud 420.0.0 ou posterior do Google Analytics. Para atualizar as ferramentas da CLI, execute o comando gcloud components update. Para conferir a versão instalada, execute o comando gcloud version.
Especifique a configuração
operating_system
no arquivoapp.yaml
:runtime: aspnetcore env: flex runtime_config: operating_system: "ubuntu22"
Como alternativa, é possível especificar uma versão de ambiente de execução incluindo a configuração runtime_version
em app.yaml
. Por padrão, o App Engine usa a versão
mais recente do LTS .NET disponível se a configuração runtime_version
não for especificada.
Por exemplo, o arquivo app.yaml
é semelhante ao seguinte ao especificar
.NET8 no Ubuntu 22:
runtime: aspnetcore
env: flex
runtime_config:
runtime_version: "8"
operating_system: "ubuntu22"
Versões anteriores do ambiente de execução
Para direcionar uma versão específica do SDK .NET, atualize o arquivo do projeto. Para mais informações, consulte Migrar do ASP.NET Core 3.1 para a versão 6.0.
Se você quiser usar o GKE ou outros hosts do Docker, precisará criar um Dockerfile que copie o código do aplicativo e instale as dependências. Para mais informações, consulte Ambientes de execução personalizados.
Implantar o aplicativo do App Engine
Para implantar o aplicativo .NET:
Execute os seguintes comandos no diretório raiz em que o app está localizado:
v6 e posteriores
gcloud app deploy
v3.1 e anteriores
dotnet restore
dotnet publish -c Release
gcloud app deploy
HTTPS e proxies de encaminhamento
O App Engine encerra a conexão HTTPS no balanceador de carga e encaminha a solicitação ao aplicativo. Os aplicativos podem examinar o X-Forwarded-Proto
para saber se o protocolo original era HTTP ou HTTPS.
Alguns aplicativos também precisam averiguar o endereço IP do usuário. Isso está disponível no cabeçalho X-Forwarded-For
padrão.
Como ampliar o ambiente de execução
O ambiente flexível do ambiente de execução do .NET pode ser usado para criar um ambiente de execução personalizado.
Os ambientes de execução personalizados são configurados por meio de Dockerfile
.
É possível personalizar Dockerfile
e .dockerignore
conforme você quiser. Por fim, você precisará especificar runtime: custom
em vez de runtime: aspnetcore
em app.yaml
. Para saber mais informações, consulte Como personalizar o ambiente de execução do .NET.
Variáveis de ambiente
As variáveis de ambiente a seguir são definidas pelo ambiente do ambiente de execução:
Variável de ambiente | Descrição |
---|---|
GAE_INSTANCE |
O nome da instância atual. |
GAE_MEMORY_MB |
A quantidade de memória disponível para o processo do aplicativo. |
GAE_SERVICE |
O nome do serviço especificado no arquivo app.yaml
do aplicativo. Se nenhum nome de serviço for especificado, será definido como default . |
GAE_VERSION |
O rótulo da versão do aplicativo atual. |
GOOGLE_CLOUD_PROJECT |
O ID do projeto associado ao seu aplicativo, que fica visível no Console do Google Cloud |
PORT |
A porta que receberá as solicitações HTTP. |
É possível definir outras variáveis de configuração com appsettings.json
.
Servidor de metadados
Cada instância do aplicativo pode usar o servidor de metadados do Compute Engine para consultar informações sobre a instância, incluindo o nome do host, o endereço IP externo, o código da instância, os metadados personalizados e as informações sobre a conta do serviço. Não é possível definir metadados personalizados para cada instância no App Engine. Em vez disso, defina metadados personalizados para todo o projeto e leia esses metadados a partir das instâncias do App Engine e do Compute Engine.
A função de exemplo abaixo usa o servidor de metadados para receber o endereço IP externo da instância: