Dockerized again...

This commit is contained in:
lumijiez
2025-06-03 20:49:39 +03:00
parent 6a675ac111
commit 735f419cd7
22 changed files with 690 additions and 5770 deletions

View File

@@ -0,0 +1,25 @@
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["src/Imprink.WebApi/Imprink.WebApi.csproj", "src/Imprink.WebApi/"]
COPY ["src/Imprink.Application/Imprink.Application.csproj", "src/Imprink.Application/"]
COPY ["src/Imprink.Domain/Imprink.Domain.csproj", "src/Imprink.Domain/"]
COPY ["src/Imprink.Infrastructure/Imprink.Infrastructure.csproj", "src/Imprink.Infrastructure/"]
RUN dotnet restore "src/Imprink.WebApi/Imprink.WebApi.csproj"
COPY . .
WORKDIR "/src/src/Imprink.WebApi"
RUN dotnet build "Imprink.WebApi.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "Imprink.WebApi.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Imprink.WebApi.dll"]

View File

@@ -4,6 +4,7 @@
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
@@ -21,4 +22,10 @@
<ProjectReference Include="..\Imprink.Infrastructure\Imprink.Infrastructure.csproj" />
</ItemGroup>
<ItemGroup>
<Content Include="..\..\.dockerignore">
<Link>.dockerignore</Link>
</Content>
</ItemGroup>
</Project>

View File

@@ -1,11 +1,9 @@
using Imprink.Application;
using Imprink.Application.Products.Handlers;
using Imprink.Domain.Entities.Users;
using Imprink.Domain.Repositories;
using Imprink.Infrastructure;
using Imprink.Infrastructure.Database;
using Imprink.Infrastructure.Repositories;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
namespace Imprink.WebApi;
@@ -30,52 +28,6 @@ public static class Startup
{
cfg.RegisterServicesFromAssembly(typeof(CreateProductHandler).Assembly);
});
services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
{
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireUppercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequiredLength = 8;
options.Password.RequiredUniqueChars = 1;
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
options.User.RequireUniqueEmail = true;
options.SignIn.RequireConfirmedEmail = true;
options.SignIn.RequireConfirmedPhoneNumber = false;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.ConfigureApplicationCookie(options =>
{
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
options.LoginPath = "/Account/Login";
options.AccessDeniedPath = "/Account/AccessDenied";
options.SlidingExpiration = true;
});
services.Configure<DataProtectionTokenProviderOptions>(options =>
{
options.TokenLifespan = TimeSpan.FromHours(24);
});
services.AddAuthorizationBuilder()
.AddPolicy("AdminPolicy", policy =>
policy.RequireRole("Administrator"))
.AddPolicy("OrderManagementPolicy", policy =>
policy.RequireRole("Administrator", "OrderManager"))
.AddPolicy("ProductManagementPolicy", policy =>
policy.RequireRole("Administrator", "ProductManager"))
.AddPolicy("CustomerPolicy", policy =>
policy.RequireRole("Customer", "Administrator", "OrderManager", "ProductManager"));
services.AddControllers();
services.AddSwaggerGen();

View File

@@ -7,7 +7,7 @@
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=Printbase;Encrypt=false;Trusted_Connection=True;TrustServerCertificate=true;MultipleActiveResultSets=true;"
"DefaultConnection": ""
},
"DatabaseOptions": {
"ApplyMigrationsAtStartup": true

View File

@@ -7,7 +7,7 @@
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=Printbase;Encrypt=false;TrustServerCertificate=true;Trusted_Connection=True;MultipleActiveResultSets=true;"
"DefaultConnection": ""
},
"DatabaseOptions": {
"ApplyMigrationsAtStartup": true