Feat: Add docker support

This commit is contained in:
Namu
2025-12-27 01:06:54 +01:00
parent 5ae8ef655a
commit 0327d70657
17 changed files with 158 additions and 54 deletions

30
.dockerignore Normal file
View File

@@ -0,0 +1,30 @@
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md
!**/.gitignore
!.git/HEAD
!.git/config
!.git/packed-refs
!.git/refs/heads/**

View File

@@ -1,3 +1,6 @@
<Solution> <Solution>
<Project Path="docker-compose.dcproj">
<Build />
</Project>
<Project Path="WorkManagementTool/WorkManagementTool.csproj" /> <Project Path="WorkManagementTool/WorkManagementTool.csproj" />
</Solution> </Solution>

View File

@@ -18,12 +18,6 @@
</NavLink> </NavLink>
</div> </div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="auth">
<span class="bi bi-lock-nav-menu" aria-hidden="true"></span> Auth Required
</NavLink>
</div>
<div class="nav-item px-3"> <div class="nav-item px-3">
<NavLink class="nav-link" href="school-subjects"> <NavLink class="nav-link" href="school-subjects">
School Subjects School Subjects

View File

@@ -1,13 +0,0 @@
@page "/auth"
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize]
<PageTitle>Auth</PageTitle>
<h1>You are authenticated</h1>
<AuthorizeView>
Hello @context.User.Identity?.Name!
</AuthorizeView>

View File

@@ -2,6 +2,6 @@
<PageTitle>Home</PageTitle> <PageTitle>Home</PageTitle>
<h1>Hello, world!</h1> <h1>Welcome to Work Management tool</h1>
Welcome to your new app. This application aims to help you with your work by managing task, homework and more !

View File

@@ -15,20 +15,18 @@
} }
else else
{ {
<dl> <dl class="row">
<dh>Name</dh> <dh class="col-3">Name</dh>
<dd>@schoolSubject.Name</dd> <dd class="col-9">@schoolSubject.Name</dd>
@if (!string.IsNullOrWhiteSpace(schoolSubject.Description)) @if (!string.IsNullOrWhiteSpace(schoolSubject.Description))
{ {
<dh>Description:</dh> <dh class="col-3">Description:</dh>
<dd>@schoolSubject.Description</dd> <dd class="col-9">@schoolSubject.Description</dd>
} }
<dh>Created At</dh> <dh class="col-3">Created At</dh>
<dd>@schoolSubject.CreatedAt.ToLocalTime()</dd> <dd class="col-9">@schoolSubject.CreatedAt.ToLocalTime()</dd>
<dh>Actions</dh>
</dl> </dl>
} }
@@ -41,6 +39,5 @@ else
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
schoolSubject = await SchoolSubjectService.GetSchoolSubjectByIdAsync(Id); schoolSubject = await SchoolSubjectService.GetSchoolSubjectByIdAsync(Id);
} }
} }

View File

@@ -11,7 +11,7 @@
<h3>SchoolSubjectListing</h3> <h3>SchoolSubjectListing</h3>
<div> <div>
<NavLink class="btn btn-primary" href="school-subjects/creation" Match="NavLinkMatch.All"> <NavLink class="btn btn-primary mb-3" href="school-subjects/creation" Match="NavLinkMatch.All">
Create Create
</NavLink> </NavLink>
</div> </div>
@@ -22,10 +22,10 @@
} }
else else
{ {
<ul> <ul class="list-unstyled">
@foreach (var schoolSubject in schoolSubjects) @foreach (var schoolSubject in schoolSubjects)
{ {
<li> <li class="border text-center p-3">
<SchoolSubjectDisplay Id="@schoolSubject.Id" /> <SchoolSubjectDisplay Id="@schoolSubject.Id" />
<div class="btn-group"> <div class="btn-group">
<SchoolSubjectDeletion Id="@schoolSubject.Id" OnDeleted="HandleDeletion" /> <SchoolSubjectDeletion Id="@schoolSubject.Id" OnDeleted="HandleDeletion" />

View File

@@ -0,0 +1,30 @@
# Consultez https://aka.ms/customizecontainer pour savoir comment personnaliser votre conteneur de débogage et comment Visual Studio utilise ce Dockerfile pour générer vos images afin daccélérer le débogage.
# Cet index est utilisé lors de lexécution à partir de VS en mode rapide (par défaut pour la configuration de débogage)
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# Cette phase est utilisée pour générer le projet de service
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WorkManagementTool/WorkManagementTool.csproj", "WorkManagementTool/"]
RUN dotnet restore "./WorkManagementTool/WorkManagementTool.csproj"
COPY . .
WORKDIR "/src/WorkManagementTool"
RUN dotnet build "./WorkManagementTool.csproj" -c $BUILD_CONFIGURATION -o /app/build
# Cette étape permet de publier le projet de service à copier dans la phase finale
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WorkManagementTool.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# Cette phase est utilisée en production ou lors de lexécution à partir de VS en mode normal (par défaut quand la configuration de débogage nest pas utilisée)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WorkManagementTool.dll"]

View File

@@ -1,23 +1,34 @@
{ {
"$schema": "https://json.schemastore.org/launchsettings.json", "profiles": {
"profiles": { "http": {
"http": { "commandName": "Project",
"commandName": "Project", "launchBrowser": true,
"dotnetRunMessages": true, "environmentVariables": {
"launchBrowser": true, "ASPNETCORE_ENVIRONMENT": "Development"
"applicationUrl": "http://localhost:5244",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}, },
"https": { "dotnetRunMessages": true,
"commandName": "Project", "applicationUrl": "http://localhost:5244"
"dotnetRunMessages": true, },
"launchBrowser": true, "https": {
"applicationUrl": "https://localhost:7148;http://localhost:5244", "commandName": "Project",
"environmentVariables": { "launchBrowser": true,
"ASPNETCORE_ENVIRONMENT": "Development" "environmentVariables": {
} "ASPNETCORE_ENVIRONMENT": "Development"
} },
"dotnetRunMessages": true,
"applicationUrl": "https://localhost:7148;http://localhost:5244"
},
"Container (Dockerfile)": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
} }
} },
"$schema": "https://json.schemastore.org/launchsettings.json"
}

View File

@@ -6,6 +6,8 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>aspnet-WorkManagementTool-90e0550e-5565-441a-8092-c4b9b07d34cf</UserSecretsId> <UserSecretsId>aspnet-WorkManagementTool-90e0550e-5565-441a-8092-c4b9b07d34cf</UserSecretsId>
<BlazorDisableThrowNavigationException>true</BlazorDisableThrowNavigationException> <BlazorDisableThrowNavigationException>true</BlazorDisableThrowNavigationException>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@@ -15,6 +17,7 @@
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.0" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.23.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

18
docker-compose.dcproj Normal file
View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
<PropertyGroup Label="Globals">
<ProjectVersion>2.1</ProjectVersion>
<DockerTargetOS>Linux</DockerTargetOS>
<ProjectGuid>81dded9d-158b-e303-5f62-77a2896d2a5a</ProjectGuid>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
<DockerServiceUrl>{Scheme}://localhost:{ServicePort}</DockerServiceUrl>
<DockerServiceName>workmanagementtool</DockerServiceName>
</PropertyGroup>
<ItemGroup>
<None Include="docker-compose.override.yml">
<DependentUpon>docker-compose.yml</DependentUpon>
</None>
<None Include="docker-compose.yml" />
<None Include=".dockerignore" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,14 @@
services:
workmanagementtool:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_HTTP_PORTS=8080
- ASPNETCORE_HTTPS_PORTS=8081
ports:
- "8080"
- "8081"
volumes:
- ${APPDATA}/Microsoft/UserSecrets:/home/app/.microsoft/usersecrets:ro
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
- ${APPDATA}/ASP.NET/Https:/home/app/.aspnet/https:ro
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro

6
docker-compose.yml Normal file
View File

@@ -0,0 +1,6 @@
services:
workmanagementtool:
image: ${DOCKER_REGISTRY-}workmanagementtool
build:
context: .
dockerfile: WorkManagementTool/Dockerfile

11
launchSettings.json Normal file
View File

@@ -0,0 +1,11 @@
{
"profiles": {
"Docker Compose": {
"commandName": "DockerCompose",
"commandVersion": "1.0",
"serviceActions": {
"workmanagementtool": "StartDebugging"
}
}
}
}