Program.cs
Код: Выделить всё
using System.Text.Json.Serialization;
using Microsoft.AspNetCore.ResponseCompression;
using mushroom_backend;
using mushroom_backend.Hubs;
using mushroom_backend.Interfaces;
using mushroom_backend.Services;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.Configure(
builder.Configuration.GetSection("MushroomStoreDatabase"));
builder.Services.AddSingleton();
builder.Services.AddHttpContextAccessor();
builder.Services.AddProblemDetails();
builder.Services.AddRouting(options => options.LowercaseUrls = true);
builder.Services.AddSignalR();
builder.Services.AddResponseCompression(opts =>
{
opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
["application/octet-stream"]);
});
builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(policy =>
policy.AllowAnyMethod().AllowAnyOrigin().AllowAnyHeader().SetPreflightMaxAge(TimeSpan.FromSeconds(3600))
.SetIsOriginAllowedToAllowWildcardSubdomains());
});
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.MapControllers();
app.MapHub("/api/hub/logHub");
app.UseResponseCompression();
app.Run();
Код: Выделить всё
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
ENV ASPNETCORE_URLS=http://0.0.0.0:5070
WORKDIR /app
EXPOSE 5070
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["mushroom_backend.csproj", "./"]
RUN dotnet restore "mushroom_backend.csproj"
COPY . .
WORKDIR "/src/"
RUN dotnet build "mushroom_backend.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "mushroom_backend.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV ASPNETCORE_ENVIRONMENT=Production
ENTRYPOINT ["dotnet", "mushroom_backend.dll", "--server.urls", "http://+:5070"]
Код: Выделить всё
{
"MushroomStoreDatabase": {
"ConnectionString": "mongodb://felix:
@:7070/",
"DatabaseName": "MushroomStore",
"FavoritesCollectionName": "Favorites"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
Код: Выделить всё
using Microsoft.AspNetCore.SignalR;
namespace mushroom_backend.Hubs;
public class LogHub(ILogger logger) : Hub
{
private readonly ILogger _logger = logger;
public override Task OnConnectedAsync()
{
_logger.LogInformation("New Connection: [{ConnectionId}]", Context.ConnectionId);
return base.OnConnectedAsync();
}
}
Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/788 ... ith-docker