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>
<Project Path="docker-compose.dcproj">
<Build />
</Project>
<Project Path="WorkManagementTool/WorkManagementTool.csproj" />
</Solution>

View File

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

View File

@@ -11,7 +11,7 @@
<h3>SchoolSubjectListing</h3>
<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
</NavLink>
</div>
@@ -22,10 +22,10 @@
}
else
{
<ul>
<ul class="list-unstyled">
@foreach (var schoolSubject in schoolSubjects)
{
<li>
<li class="border text-center p-3">
<SchoolSubjectDisplay Id="@schoolSubject.Id" />
<div class="btn-group">
<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": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:5244",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"dotnetRunMessages": true,
"applicationUrl": "http://localhost:5244"
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7148;http://localhost:5244",
"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>
<UserSecretsId>aspnet-WorkManagementTool-90e0550e-5565-441a-8092-c4b9b07d34cf</UserSecretsId>
<BlazorDisableThrowNavigationException>true</BlazorDisableThrowNavigationException>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
</PropertyGroup>
<ItemGroup>
@@ -15,6 +17,7 @@
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" 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.VisualStudio.Azure.Containers.Tools.Targets" Version="1.23.0" />
</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"
}
}
}
}