This commit is contained in:
2025-10-29 15:50:55 -03:00
parent 83a74585a0
commit 7e2004a295
9 changed files with 79 additions and 30 deletions

View File

@@ -2,25 +2,20 @@
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /app
# Copiar archivos de proyecto y restaurar dependencias primero para aprovechar el caché de Docker
COPY backend/src/Titulares.Api/Titulares.Api.csproj backend/src/Titulares.Api/
RUN dotnet restore backend/src/Titulares.Api/Titulares.Api.csproj
# Copiar el resto del código fuente del backend
COPY backend/src/ ./backend/src/
# Publicar la aplicación en modo Release
RUN dotnet publish backend/src/Titulares.Api/Titulares.Api.csproj -c Release -o /app/publish
# --- Etapa 2: Imagen Final (Final) ---
FROM mcr.microsoft.com/dotnet/aspnet:9.0
WORKDIR /app
# Copiar solo los artefactos compilados desde la etapa de build
COPY --from=build /app/publish .
# Exponer el puerto interno que ASP.NET Core usará por defecto en Docker
EXPOSE 8080
# Comando para iniciar la aplicación
# Añade esta línea para asegurar que Kestrel escuche en el puerto 8080
ENV ASPNETCORE_URLS=http://+:8080
ENTRYPOINT ["dotnet", "Titulares.Api.dll"]

View File

@@ -4,6 +4,7 @@ using Titulares.Api.Hubs;
using Titulares.Api.Models;
using Titulares.Api.Services;
using Titulares.Api.Workers;
using Microsoft.AspNetCore.HttpOverrides;
var builder = WebApplication.CreateBuilder(args);
@@ -23,19 +24,27 @@ builder.Services.AddScoped<CsvService>();
builder.Services.AddSingleton<ConfiguracionRepositorio>();
builder.Services.AddSingleton<EstadoProcesoService>();
// Añadimos la política de CORS
var frontendUrl = "http://192.168.5.128:8905";
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowReactApp", builder =>
options.AddPolicy("AllowReactApp", policyBuilder =>
{
//builder.WithOrigins("http://localhost:5173")
builder.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
policyBuilder.WithOrigins(frontendUrl)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
});
builder.Services.AddSignalR();
builder.Services.AddHostedService<ProcesoScrapingWorker>();
@@ -47,6 +56,16 @@ builder.Services.AddAuthorization();
// ==========================
var app = builder.Build();
// DEBE IR ANTES DE UseRouting, UseCors, UseAuthorization, etc.
app.UseForwardedHeaders();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
// 3. Configurar el pipeline de peticiones HTTP.
// ============================================
@@ -72,5 +91,4 @@ app.UseAuthorization();
app.MapControllers();
app.MapHub<TitularesHub>("/titularesHub");
app.Run();

View File

@@ -7,6 +7,6 @@
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "Server=db-sqlserver;Database=TitularesDB;User Id=titularesApi;Password=PTP847Titulares;Trusted_Connection=True;TrustServerCertificate=True;"
"DefaultConnection": "Server=db-sqlserver;Database=TitularesDB;User Id=titularesApi;Password=PTP847Titulares;TrustServerCertificate=True;"
}
}