- Configurazione Kestrel ottimizzata per ambienti Docker/Unraid: porta 8080 in produzione, HTTPS redirect solo in sviluppo - Endpoint /health sempre attivo per healthcheck automatici - Aggiunti file docker-compose.yml e unraid-template.xml per deploy e gestione nativa su Unraid (senza Portainer) - Nuova guida UNRAID_NATIVE_INSTALL.md per installazione, update e troubleshooting su Unraid - Logging e appsettings separati per Development/Production - launchSettings.json aggiornato e semplificato - Rimosso package Azure Containers Tools dal csproj; aggiunto target MSBuild per push automatico su Gitea Registry dopo publish - Algoritmo SMA più robusto: filtra dati nulli/invalidi e gestisce casi di dati insufficienti - Pronto per deploy professionale, aggiornamento e gestione semplificata in ambienti containerizzati
54 lines
1.4 KiB
C#
54 lines
1.4 KiB
C#
using TradingBot.Components;
|
|
using TradingBot.Services;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
// Configure Kestrel - Solo in Development usa porte da launchSettings
|
|
// In Production/Docker usa porta 8080 su tutte le interfacce
|
|
if (builder.Environment.IsProduction() || builder.Environment.EnvironmentName == "Docker")
|
|
{
|
|
builder.WebHost.ConfigureKestrel(serverOptions =>
|
|
{
|
|
serverOptions.ListenAnyIP(8080);
|
|
});
|
|
}
|
|
|
|
// Add services to the container.
|
|
builder.Services.AddRazorComponents()
|
|
.AddInteractiveServerComponents();
|
|
|
|
// Trading Bot Services - Using Simulated Market Data
|
|
builder.Services.AddSingleton<IMarketDataService, SimulatedMarketDataService>();
|
|
builder.Services.AddSingleton<ITradingStrategy, SimpleMovingAverageStrategy>();
|
|
builder.Services.AddSingleton<TradingBotService>();
|
|
builder.Services.AddSingleton<SettingsService>();
|
|
|
|
// Add health checks for Docker
|
|
builder.Services.AddHealthChecks();
|
|
|
|
var app = builder.Build();
|
|
|
|
// Configure the HTTP request pipeline.
|
|
if (!app.Environment.IsDevelopment())
|
|
{
|
|
app.UseExceptionHandler("/Error", createScopeForErrors: true);
|
|
app.UseHsts();
|
|
}
|
|
|
|
// HTTPS redirect solo in Development
|
|
if (app.Environment.IsDevelopment())
|
|
{
|
|
app.UseHttpsRedirection();
|
|
}
|
|
|
|
app.UseStaticFiles();
|
|
app.UseAntiforgery();
|
|
|
|
// Health check endpoint
|
|
app.MapHealthChecks("/health");
|
|
|
|
app.MapRazorComponents<App>()
|
|
.AddInteractiveServerRenderMode();
|
|
|
|
app.Run();
|