diff --git a/src/GreenHome.Api/Dockerfile b/src/GreenHome.Api/Dockerfile index ce55d11..dc3a9bd 100644 --- a/src/GreenHome.Api/Dockerfile +++ b/src/GreenHome.Api/Dockerfile @@ -1,17 +1,26 @@ -# مرحله build +# Stage 1: Build frontend +FROM node:20-alpine AS frontend-build +WORKDIR /app +COPY ./src/GreenHome.Web/package*.json ./ +RUN npm ci --ignore-scripts || npm install +COPY ./src/GreenHome.Web/ . +RUN npm run build + +# Stage 2: Build backend FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src -COPY . . -# Publish ONLY the API project: the build context contains the whole -# solution, and publishing the sln would dump every project's -# appsettings.json into /app (last one wins) — e.g. DataCopy's -# overwrote the API's and broke IppanelSms startup. + +COPY ./src/ . + +# Copy built frontend from previous stage +COPY --from=frontend-build /app/dist /src/GreenHome.Api/wwwroot/ + RUN dotnet restore GreenHome.Api/GreenHome.Api.csproj RUN dotnet publish GreenHome.Api/GreenHome.Api.csproj -c Release -o /app - -# مرحله runtime + FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime WORKDIR /app COPY --from=build /app . -EXPOSE 8080 -ENTRYPOINT ["dotnet", "GreenHome.Api.dll"] +RUN mkdir -p /app/My_StaticFiles +RUN mkdir -p /app/files +ENTRYPOINT ["dotnet", "GreenHome.Api.dll"] \ No newline at end of file