diff --git a/.dockerignore b/.dockerignore
index 8f663ba4..4f0f6590 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,65 +1,6 @@
-
-private/
-.git
-bin/
-obj/
-out/
-dist/
-node_modules/
-
-*.pfx
-*.userprefs
-*.Private.cs
-*-secret.json
-
-.gitignore
-.paket/
+**/bin/
+**/obj/
+**/.playwright/
+.git/
.vs/
-.sass-cache/
-.private/
-
-/out
-bin
-obj
-bower_components
-node_modules/
-private/
-
-DataProtection-Keys/
-RSA-Params.json
-appsettings.*.json
-omnisharp.json
-
-DataProtection/
-
-/packages/
-/src/Yavsc/Avatars-*/
-/src/Yavsc/Blog-*/
-/src/Yavsc/Bills-*/
-/src/Yavsc/AppData*/
-/src/Yavsc/Temp-*/
-/src/Yavsc/bower_components/
-/src/Yavsc/Data-Dev/
-/src/test/testingrepo/
-connectionsettings.Development.json
-appsettings.Development.json
-/src/Yavsc/web.log
-/yavscd
-builds/
-/test/yavscTests/test-results.xml
-/test/yavscTests/test-results.html
-yavsc-pre
-
-*.env
-generated/
-*.lscache
-*.Development.json
-*.log
-
-**/AppDataDevelopment/
-binaries/
-build/
-src/*/Blog-Dev/
-*.mp4
-src/Yavsc.Org/data/
-
+.github/
diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml
new file mode 100644
index 00000000..16073a02
--- /dev/null
+++ b/.github/workflows/docker-publish.yml
@@ -0,0 +1,41 @@
+name: Build and Push Yavsc Production Image
+
+on:
+ push:
+ branches:
+ - main
+ - master
+ workflow_dispatch:
+
+jobs:
+ production-deploy:
+ runs-on: ubuntu-latest
+
+ steps:
+ # 1. Récupération du code
+ - name: Check out the repo
+ uses: actions/checkout@v4
+
+ # 2. Configuration du moteur de Buildx
+ - name: Set up Docker Buildx
+ uses: actions/setup-buildx-action@v3
+
+ # 3. Connexion sécurisée à Docker Hub
+ - name: Log in to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+
+ # 4. Build et Push de l'image de production finale
+ - name: Build and push production image
+ uses: docker/build-push-action@v6
+ with:
+ context: .
+ file: ./Dockerfile.prod
+ push: true
+ tags: |
+ pazof/yavsc:latest
+ pazof/yavsc:${{ github.sha }}
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
diff --git a/Directory.Packages.old.props b/Directory.Packages.old.props
deleted file mode 100644
index 8c40e048..00000000
--- a/Directory.Packages.old.props
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 0d535731..c635b164 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -11,7 +11,9 @@
-
+
+
+
@@ -24,7 +26,7 @@
-
+
@@ -64,10 +66,10 @@
-
+
-
\ No newline at end of file
+
diff --git a/Dockerfile b/Dockerfile
index 9767f5f5..e0b53752 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,33 +1,38 @@
-# Build stage
-FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
+# Utilisation de votre image globale pour le build et l'exécution
+FROM pazof/yavsc-build-env:latest AS build-env
WORKDIR /src
-COPY . .
-RUN dotnet workload install android --skip-manifest-update
-RUN dotnet workload restore
+
+
+# 1. Copie de la solution
+COPY *.sln ./
+COPY Directory.*.props ./
+
+# 2. Copie de l'intégralité des fichiers de projets (.csproj) pour la restauration
+COPY src/Yavsc.Org/*.csproj ./src/Yavsc.Org/
+COPY src/Yavsc.Abstract/*.csproj ./src/Yavsc.Abstract/
+COPY src/Yavsc.Server/*.csproj ./src/Yavsc.Server/
+COPY src/Yavsc.Web/*.csproj ./src/Yavsc.Web/
+COPY src/Yavsc.Api/*.csproj ./src/Yavsc.Api/
+COPY src/Yavsc.Blogs/*.csproj ./src/Yavsc.Blogs/
+COPY src/cli/*.csproj ./src/cli/
+COPY test/yavscTests/*.csproj ./test/yavscTests/
+
+# Projets associés à PostIt
+COPY src/PostIt/PostIt/*.csproj ./src/PostIt/PostIt/
+COPY src/PostIt/PostIt.Android/*.csproj ./src/PostIt/PostIt.Android/
+COPY src/PostIt/PostIt.Browser/*.csproj ./src/PostIt/PostIt.Browser/
+COPY src/PostIt/PostIt.Desktop/*.csproj ./src/PostIt/PostIt.Desktop/
+
+# 3. Restauration des dépendances avec vos workloads actifs
RUN dotnet nuget add source https://isn.pschneider.fr/v3/index.json --allow-insecure-connections
-RUN dotnet publish src/Yavsc.Org/Yavsc.Org.csproj -c Release -o /app/publish
+RUN dotnet restore
-# Runtime stage
-FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
-WORKDIR /app
+# 4. Copie du reste du code source (filtré par votre .dockerignore)
+COPY . .
-# Variables d'environnement avec valeurs par défaut
-ARG POSTGRES_HOST=localhost
-ARG POSTGRES_PORT=5432
-ARG POSTGRES_DB=yavsc
-ARG POSTGRES_USER=yavsc
-ARG POSTGRES_PASSWORD
+# 5. Compilation globale de la solution
+RUN dotnet build -c Release
-ENV POSTGRES_HOST=${POSTGRES_HOST}
-ENV POSTGRES_PORT=${POSTGRES_PORT}
-ENV POSTGRES_DB=${POSTGRES_DB}
-ENV POSTGRES_USER=${POSTGRES_USER}
-ENV POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
-
-# Chaîne de connexion construite depuis les variables
-ENV ConnectionStrings__DefaultConnection=\
-"Host=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=${POSTGRES_DB};Username=${POSTGRES_USER};Password=${POSTGRES_PASSWORD}"
-
-COPY --from=build /app/publish .
-EXPOSE 5000
-ENTRYPOINT ["dotnet", "Yavsc.Org.dll"]
+# L'image finale reste sur votre environnement complet
+EXPOSE 8080
+CMD ["bash"]