Linguagem Frankfurt, Alemanha
A Nodion reconhece .NET por um ficheiro de projeto, uma solution ou um global.json. O buildpack .NET executa dotnet publish -c Release com o SDK que o seu projeto usa como alvo e inicia a aplicação publicada no runtime ASP.NET Core, a escutar na porta que a Nodion define; o SDK fica fora da imagem de execução (run image). A aplicação é executada em Frankfurt, ao lado de uma base de dados PostgreSQL gerida, se precisar de uma.
*.csproj, *.fsproj, *.sln ou global.jsondotnet <App>.dll em http://0.0.0.0:$PORT.csproj ou .fsproj do Base directory, em modo framework-dependent. Com vários projetos, ou com uma solution cujos projetos estão em subpastas, defina no separador Environment DOTNET_PROJECT com o caminho do projeto web e a opção Build; a raiz continua a precisar de um .sln ou de um global.json para que a Nodion detete .NET. Apontar o Base directory para a pasta do projeto só funciona se o projeto não referenciar projetos fora dela, porque o build não vê nada acima dessa pasta. Build variable DOTNET_PROJECT=src/MyApp.Web/MyApp.Web.csproj ASPNETCORE_URLS=http://0.0.0.0:$PORT. Remova os URLs fixos no código, como app.Run("http://localhost:5000"), e os endpoints Kestrel em appsettings.json, que têm prioridade sobre essa variável. Uma API sem página em / precisa de um endpoint de health check; defina o caminho dele como caminho do health check nas definições da aplicação. Program.cs var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHealthChecks();
var app = builder.Build();
app.MapHealthChecks("/healthz");
app.MapGet("/", () => "Hello from Nodion");
app.Run(); "AllowedHosts": "*", deixa-o passar. Com uma lista dos seus domínios, o ASP.NET Core responde 400 e a release nunca entra em produção; mantenha *, ou verifique os hosts num middleware próprio que ignore o caminho do health check. appsettings.json {
"AllowedHosts": "*"
} postgres:// como DATABASE_URL, por isso, ao associar a base de dados no separador Environment, injete host, port, database, user e password com nomes à sua escolha e construa a partir deles a connection string. Program.cs var cs = new Npgsql.NpgsqlConnectionStringBuilder
{
Host = builder.Configuration["DB_HOST"],
Port = int.Parse(builder.Configuration["DB_PORT"] ?? "5432"),
Database = builder.Configuration["DB_NAME"],
Username = builder.Configuration["DB_USER"],
Password = builder.Configuration["DB_PASSWORD"],
}.ConnectionString;
builder.Services.AddDbContext<AppDbContext>(o => o.UseNpgsql(cs)); dotnet ef não pode correr como passo de release. Aplique-as no arranque da aplicação com Database.Migrate(), o que funciona bem com uma única instância, ou mude para um Dockerfile que compile um migration bundle do EF Core e o execute como comando de release da aplicação. Program.cs using (var scope = app.Services.CreateScope())
{
scope.ServiceProvider.GetRequiredService<AppDbContext>().Database.Migrate();
} global.json; se não existir, do TargetFramework do projeto no Base directory; caso contrário, é usado o .NET 10. A imagem de execução recebe o runtime ASP.NET Core da mesma linha. Um projeto numa subpasta não é lido para este efeito, por isso uma aplicação net8.0 ou net9.0 selecionada com DOTNET_PROJECT precisa de um global.json com essa versão. A Nodion instala o SDK atual dessa linha, que pode pertencer a uma feature band mais recente, por isso defina aí "rollForward": "latestFeature".ASPNETCORE_ENVIRONMENT, por isso o ASP.NET Core corre como Production e lê appsettings.Production.json além de appsettings.json. Guarde os segredos em variáveis de ambiente marcadas como secretas; ConnectionStrings__Default corresponde a ConnectionStrings:Default.DATABASE_URL, REDIS_URL ou CLICKHOUSE_URL. release: do Procfile é executada a cada novo build. As aplicações com Dockerfile, bem como os redeploys ou rollbacks para uma imagem anterior, usam um comando de release definido na própria aplicação, que também tem prioridade sobre a linha do Procfile. Nos sites estáticos, a etapa de release é executada numa imagem que contém apenas os ficheiros gerados pelo build. Normalmente, o health check recebe um 400 por causa de um AllowedHosts restrito, um 404 em / num projeto de API, ou nenhuma resposta porque um URL fixo no código ou um endpoint Kestrel faz a aplicação escutar noutro sítio. Mantenha AllowedHosts em *, defina um caminho de health check como /healthz e deixe que ASPNETCORE_URLS decida o endereço.
As aplicações Blazor Server e o projeto de servidor de uma Blazor Web App correm como aplicações ASP.NET Core; se o repositório tiver vários projetos, aponte DOTNET_PROJECT para o projeto de servidor. Uma aplicação Blazor WebAssembly autónoma não tem servidor para iniciar, por isso o buildpack .NET não consegue fazer o deploy dela: aloje-a num projeto ASP.NET Core ou use um Dockerfile.
Não. Aplique-as no arranque com Database.Migrate(), ou compile um migration bundle do EF Core num Dockerfile e execute-o como comando de release. A ferramenta dotnet ef precisa do SDK, que não está na imagem de execução do buildpack.
Sim. Um .fsproj é detetado e publicado tal como um .csproj, por isso o deploy das aplicações web F# em ASP.NET Core faz-se da mesma forma.
Na região EU Central, em Frankfurt (Alemanha). O build, o registry, a aplicação e as respetivas bases de dados, volumes, buckets, logs e métricas ficam nessa região, e a API e o plano de controlo da Nodion estão alojados na Alemanha. A Nodion GmbH tem sede em Stuttgart.
A Nodion cria as condições para isso: a Nodion GmbH tem sede em Stuttgart (Alemanha); na região de Frankfurt, a aplicação, as bases de dados e os volumes são executados na Alemanha. O acordo de tratamento de dados (DPA, art. 28.º do RGPD) é celebrado eletronicamente no dashboard. A conformidade da sua utilização depende também da forma como configura e utiliza a aplicação.
Uma instância da aplicação custa a partir de 1 EUR por mês. A configuração apresentada no quadro de custos custa 3.50 EUR por mês: Aplicação 2 EUR, PostgreSQL 1.50 EUR. Os preços não incluem IVA e a faturação é ao segundo. Pode escolher tamanhos maiores ou mais instâncias sempre que precisar.
Sim. Cada aplicação recebe um hostname atribuído por omissão com HTTPS. Adicione o seu próprio domínio no separador Domains da aplicação; o certificado TLS é emitido e renovado automaticamente.
Ganhe até 15 € de crédito ao registar-se.
ou com e-mail
Novidades do produto, sem spam. Pode cancelar a subscrição a qualquer momento.
Subscrição efetuada com sucesso.