| |
| |
| |
| |
|
|
| ARG PROJECT=OptimAI.BRE.Gateway |
|
|
| |
| FROM mcr.microsoft.com/dotnet/sdk:8.0 AS restore |
| ARG PROJECT |
| WORKDIR /src |
|
|
| COPY ["OptimAI.BRE.Shared/OptimAI.BRE.Shared.csproj", "OptimAI.BRE.Shared/"] |
| COPY ["OptimAI.BRE.RuleEngine/OptimAI.BRE.RuleEngine.csproj", "OptimAI.BRE.RuleEngine/"] |
| COPY ["OptimAI.BRE.RuleDesigner/OptimAI.BRE.RuleDesigner.csproj","OptimAI.BRE.RuleDesigner/"] |
| COPY ["OptimAI.BRE.AIEngine/OptimAI.BRE.AIEngine.csproj", "OptimAI.BRE.AIEngine/"] |
| COPY ["OptimAI.BRE.ClientMgmt/OptimAI.BRE.ClientMgmt.csproj", "OptimAI.BRE.ClientMgmt/"] |
| COPY ["OptimAI.BRE.AuditService/OptimAI.BRE.AuditService.csproj","OptimAI.BRE.AuditService/"] |
| COPY ["OptimAI.BRE.ReportService/OptimAI.BRE.ReportService.csproj","OptimAI.BRE.ReportService/"] |
| COPY ["OptimAI.BRE.IdentityService/OptimAI.BRE.IdentityService.csproj","OptimAI.BRE.IdentityService/"] |
| COPY ["OptimAI.BRE.Gateway/OptimAI.BRE.Gateway.csproj", "OptimAI.BRE.Gateway/"] |
| COPY ["OptimAI.BRE.sln", "./"] |
|
|
| RUN dotnet restore "OptimAI.BRE.Gateway/OptimAI.BRE.Gateway.csproj" \ |
| --runtime linux-x64 |
|
|
| |
| FROM restore AS build |
| ARG PROJECT |
| COPY . . |
|
|
| RUN dotnet build "${PROJECT}/${PROJECT}.csproj" \ |
| -c Release \ |
| --no-restore \ |
| --runtime linux-x64 \ |
| --self-contained false \ |
| -o /app/build |
|
|
| |
| FROM build AS publish |
| ARG PROJECT |
|
|
| RUN dotnet publish "${PROJECT}/${PROJECT}.csproj" \ |
| -c Release \ |
| --no-restore \ |
| --runtime linux-x64 \ |
| --self-contained false \ |
| /p:UseAppHost=false \ |
| -o /app/publish |
|
|
| |
| FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS runtime |
|
|
| |
| RUN apk add --no-cache curl tzdata && \ |
| cp /usr/share/zoneinfo/Asia/Kolkata /etc/localtime && \ |
| echo "Asia/Kolkata" > /etc/timezone && \ |
| apk del tzdata |
|
|
| |
| RUN addgroup -S appgroup && adduser -S appuser -G appgroup |
|
|
| WORKDIR /app |
|
|
| COPY --from=publish --chown=appuser:appgroup /app/publish . |
|
|
| |
| RUN mkdir -p /app/logs /app/reports && \ |
| chown -R appuser:appgroup /app/logs /app/reports |
|
|
| USER appuser |
|
|
| ENV ASPNETCORE_URLS=http://+:8080 \ |
| ASPNETCORE_ENVIRONMENT=Production \ |
| DOTNET_RUNNING_IN_CONTAINER=true \ |
| DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \ |
| TZ=Asia/Kolkata |
|
|
| EXPOSE 8080 |
|
|
| HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=5 \ |
| CMD curl -f http://localhost:8080/health || exit 1 |
|
|
| ENTRYPOINT ["dotnet", "OptimAI.BRE.Gateway.dll"] |
|
|