From ebae8f3e1623f25b4cf09ce9e3f8cdf18464e326 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sun, 7 Dec 2025 00:05:55 +0330 Subject: [PATCH] Add Docker deployment configuration and update package references --- .gitea/workflows/kub-deploy.yml | 90 ++++++++++++++++++++ src/.dockerignore | 25 ++++++ src/FrontOffice.Main/Dockerfile | 24 ++++++ src/FrontOffice.Main/FrontOffice.Main.csproj | 45 ++++++---- src/FrontOffice.Main/NuGet.config | 18 ++++ src/FrontOffice.Main/appsettings.json | 2 +- 6 files changed, 187 insertions(+), 17 deletions(-) create mode 100644 .gitea/workflows/kub-deploy.yml create mode 100644 src/.dockerignore create mode 100644 src/FrontOffice.Main/Dockerfile create mode 100644 src/FrontOffice.Main/NuGet.config diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml new file mode 100644 index 0000000..f81277e --- /dev/null +++ b/.gitea/workflows/kub-deploy.yml @@ -0,0 +1,90 @@ +name: Build and Deploy + +on: + push: + branches: + - kub-stage + +env: + REGISTRY: gitea-svc:3000 + IMAGE_NAME: admin/frontoffice + +jobs: + build: + runs-on: ubuntu-latest + container: + image: docker:latest + options: --privileged + env: + HTTP_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + HTTPS_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + NO_PROXY: localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8 + steps: + - name: Install dependencies + run: | + apk add --no-cache git curl + + # Install kubectl + curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" + chmod +x kubectl + mv kubectl /usr/local/bin/ + + - name: Start Docker daemon with insecure registry + run: | + mkdir -p /etc/docker + cat > /etc/docker/daemon.json << 'DAEMON' + { + "insecure-registries": ["194.5.195.53:30080", "gitea-svc:3000"] + } + DAEMON + mkdir -p ~/.docker + cat > ~/.docker/config.json << 'CONF' + { + "proxies": { + "default": { + "httpProxy": "http://proxyuser:87zH26nbqT2@46.249.98.211:3128", + "httpsProxy": "http://proxyuser:87zH26nbqT2@46.249.98.211:3128", + "noProxy": "localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8" + } + } + } + CONF + dockerd & + for i in $(seq 1 30); do + docker info >/dev/null 2>&1 && break || sleep 2 + done + docker info + + - name: Checkout code + run: | + git clone --depth 1 --branch kub-stage http://gitea-svc:3000/admin/FrontOffice.git . + git log -1 --format="%H %s" + + - name: Build Docker Image + run: | + cd src + docker build -f FrontOffice/Dockerfile \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \ + --build-arg HTTP_PROXY=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 \ + --build-arg HTTPS_PROXY=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 \ + . + + + - name: Push to Registry + run: | + echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ env.REGISTRY }} -u admin --password-stdin + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + + - name: Deploy to Kubernetes + run: | + # Setup kubeconfig + mkdir -p ~/.kube + echo "${{ secrets.KUBECONFIG }}" | base64 -d > ~/.kube/config + + # Restart deployment to pull new image + kubectl rollout restart deployment/frontoffice || echo "Deployment doesn't exist yet" + + # Wait for rollout to complete + kubectl rollout status deployment/frontoffice --timeout=5m || echo "Deployment rollout pending" diff --git a/src/.dockerignore b/src/.dockerignore new file mode 100644 index 0000000..cd967fc --- /dev/null +++ b/src/.dockerignore @@ -0,0 +1,25 @@ +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/.idea +**/*.*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 \ No newline at end of file diff --git a/src/FrontOffice.Main/Dockerfile b/src/FrontOffice.Main/Dockerfile new file mode 100644 index 0000000..fa47b77 --- /dev/null +++ b/src/FrontOffice.Main/Dockerfile @@ -0,0 +1,24 @@ +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base +USER $APP_UID +WORKDIR /app +EXPOSE 8080 +EXPOSE 8081 + +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["FrontOffice.Main/NuGet.config", "NuGet.config"] +COPY ["FrontOffice.Main/FrontOffice.Main.csproj", "FrontOffice.Main/"] +RUN dotnet restore "FrontOffice.Main/FrontOffice.Main.csproj" --configfile NuGet.config +COPY . . +WORKDIR "/src/FrontOffice.Main" +RUN dotnet build "./FrontOffice.Main.csproj" -c $BUILD_CONFIGURATION -o /app/build + +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./FrontOffice.Main.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "FrontOffice.Main.dll"] diff --git a/src/FrontOffice.Main/FrontOffice.Main.csproj b/src/FrontOffice.Main/FrontOffice.Main.csproj index 64ba205..2431952 100644 --- a/src/FrontOffice.Main/FrontOffice.Main.csproj +++ b/src/FrontOffice.Main/FrontOffice.Main.csproj @@ -5,18 +5,24 @@ enable enable 6dab807c-c6d8-4711-bf64-11c69e8d39f4 + Linux - - - - - - - - + + + + + + + + + + + + + @@ -29,17 +35,24 @@ - - - - - - - - + + + + + + + + + + + + + .dockerignore + + diff --git a/src/FrontOffice.Main/NuGet.config b/src/FrontOffice.Main/NuGet.config new file mode 100644 index 0000000..81da29b --- /dev/null +++ b/src/FrontOffice.Main/NuGet.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/FrontOffice.Main/appsettings.json b/src/FrontOffice.Main/appsettings.json index b7ee45f..80f39ed 100644 --- a/src/FrontOffice.Main/appsettings.json +++ b/src/FrontOffice.Main/appsettings.json @@ -1,5 +1,5 @@ { - "GwUrl": "https://fogw.kbs1.ir", + "GwUrl": "http://backoffice-bff-svc", // "GwUrl": "https://localhost:34781", "DownloadUrl": "https://dl.afrino.co", "EncryptionSettings": {