Język Frankfurt nad Menem, Niemcy
Nodion rozpoznaje .NET po pliku projektu, pliku solution albo global.json. Buildpack .NET uruchamia dotnet publish -c Release z SDK wymaganym przez Twój projekt i startuje opublikowaną aplikację na runtime ASP.NET Core, nasłuchującą na porcie ustawionym przez Nodion; SDK nie trafia do obrazu uruchomieniowego (run image). Aplikacja działa we Frankfurcie nad Menem, obok zarządzanej bazy danych PostgreSQL, jeśli jej potrzebujesz.
*.csproj, *.fsproj, *.sln lub global.jsondotnet <App>.dll na http://0.0.0.0:$PORT.csproj lub .fsproj w katalogu Base directory, w trybie framework-dependent. Przy kilku projektach albo solution z projektami w podkatalogach ustaw w zakładce Environment DOTNET_PROJECT na ścieżkę projektu webowego, z zaznaczoną opcją Build; katalog główny nadal potrzebuje pliku .sln lub global.json, aby Nodion wykrył .NET. Ustawienie Base directory na katalog projektu działa tylko wtedy, gdy projekt nie odwołuje się do projektów spoza tego katalogu, bo build nie widzi niczego powyżej niego. Build variable DOTNET_PROJECT=src/MyApp.Web/MyApp.Web.csproj ASPNETCORE_URLS=http://0.0.0.0:$PORT. Usuń zakodowane na sztywno adresy URL, takie jak app.Run("http://localhost:5000"), oraz endpointy Kestrel w appsettings.json, bo mają pierwszeństwo przed tą zmienną. API bez strony pod / potrzebuje endpointu do health checku; ustaw jego ścieżkę jako ścieżkę health checku w ustawieniach aplikacji. 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": "*", przepuszcza taki adres. Przy liście Twoich domen ASP.NET Core odpowiada 400, a release nigdy nie przejmuje ruchu; zostaw * albo sprawdzaj hosty we własnym middleware, które pomija ścieżkę health checku. appsettings.json {
"AllowedHosts": "*"
} postgres:// takich jak DATABASE_URL, więc podłączając bazę danych w zakładce Environment, przekaż host, port, nazwę bazy danych, użytkownika i hasło jako zmienne o własnych nazwach i zbuduj z nich ciąg połączenia. 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 nie może działać jako krok release. Zastosuj je przy starcie aplikacji przez Database.Migrate(), co sprawdza się przy jednej instancji, albo przejdź na Dockerfile, który buduje migration bundle EF Core i uruchamia go jako polecenie release aplikacji. Program.cs using (var scope = app.Services.CreateScope())
{
scope.ServiceProvider.GetRequiredService<AppDbContext>().Database.Migrate();
} global.json, a jeśli go nie ma, na podstawie TargetFramework projektu w katalogu Base directory, a jeśli i tego nie ma, używany jest .NET 10; obraz uruchomieniowy dostaje runtime ASP.NET Core z tej samej linii. Projekt w podkatalogu nie jest do tego odczytywany, więc aplikacja net8.0 lub net9.0 wybrana przez DOTNET_PROJECT potrzebuje global.json z tą wersją. Nodion instaluje aktualne SDK tej linii, które może należeć do nowszego feature bandu, więc ustaw tam "rollForward": "latestFeature".ASPNETCORE_ENVIRONMENT, więc ASP.NET Core działa jako Production i odczytuje appsettings.Production.json oprócz appsettings.json. Sekrety trzymaj w zmiennych środowiskowych oznaczonych jako sekret; ConnectionStrings__Default odpowiada ConnectionStrings:Default.DATABASE_URL, REDIS_URL lub CLICKHOUSE_URL. release: w Procfile uruchamia się przy każdym nowym buildzie. Aplikacje z Dockerfile, a także ponowne wdrożenia i rollbacki do wcześniejszego obrazu, korzystają z polecenia release ustawionego w samej aplikacji, które ma też pierwszeństwo przed linią z Procfile. W przypadku stron statycznych krok release działa w obrazie zawierającym tylko zbudowane pliki. Zwykle health check dostaje 400 przez ograniczone AllowedHosts, 404 na / w projekcie API albo nie dostaje odpowiedzi, bo zakodowany na sztywno URL lub endpoint Kestrel sprawia, że aplikacja nasłuchuje gdzie indziej. Zostaw AllowedHosts na *, ustaw ścieżkę health checku, na przykład /healthz, i pozwól, aby adres ustalała ASPNETCORE_URLS.
Aplikacje Blazor Server i projekt serwerowy Blazor Web App działają jako aplikacje ASP.NET Core; jeśli w repozytorium jest kilka projektów, wskaż w DOTNET_PROJECT projekt serwerowy. Samodzielna aplikacja Blazor WebAssembly nie ma serwera do uruchomienia, więc buildpack .NET nie może jej wdrożyć: osadź ją w projekcie ASP.NET Core albo użyj Dockerfile.
Nie. Zastosuj je przy starcie przez Database.Migrate() albo zbuduj migration bundle EF Core w Dockerfile i uruchom go jako polecenie release. Narzędzie dotnet ef potrzebuje SDK, którego nie ma w obrazie uruchomieniowym buildpacka.
Tak. Plik .fsproj jest wykrywany i publikowany tak samo jak .csproj, więc aplikacje webowe w F# na ASP.NET Core wdrażasz w ten sam sposób.
W regionie EU Central we Frankfurcie nad Menem (Niemcy). Build, rejestr, aplikacja oraz jej bazy danych, wolumeny, buckety, logi i metryki pozostają w tym regionie, a API i warstwa sterowania (control plane) Nodion są hostowane w Niemczech. Nodion GmbH ma siedzibę w Stuttgarcie.
Nodion zapewnia do tego podstawy: Nodion GmbH ma siedzibę w Stuttgarcie (Niemcy), w regionie Frankfurt nad Menem aplikacja, jej bazy danych i wolumeny działają w Niemczech, a umowę powierzenia przetwarzania danych (DPA, art. 28 RODO) zawierasz elektronicznie w dashboardzie. To, czy Twoje wdrożenie spełnia wymogi RODO, zależy też od tego, jak skonfigurujesz aplikację i jak z niej korzystasz.
Instancja aplikacji kosztuje od 1 EUR miesięcznie. Konfiguracja z ramki kosztuje 3.50 EUR miesięcznie: Aplikacja 2 EUR, PostgreSQL 1.50 EUR. Ceny są podane netto, a rozliczenie następuje co do sekundy. Większe rozmiary lub więcej instancji możesz wybrać w dowolnym momencie.
Tak. Każda aplikacja dostaje domyślną nazwę hosta z HTTPS. Własną domenę dodasz w zakładce Domains aplikacji, a certyfikat TLS jest wystawiany i odnawiany automatycznie.
Zyskaj do 15 € środków na start przy rejestracji.
lub przez e-mail
Nowości produktowe, bez spamu. Możesz zrezygnować w każdej chwili.
Zapisano pomyślnie.