##See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. # #FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base # ## ตั้งค่า TimeZone ใน Container #ENV TZ=Asia/Bangkok #RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # #WORKDIR /app #EXPOSE 80 #EXPOSE 443 # #FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build #WORKDIR /src # #COPY ["BMA.EHR.Domain/BMA.EHR.Domain.csproj", "BMA.EHR.Domain/"] #COPY ["BMA.EHR.Application/BMA.EHR.Application.csproj", "BMA.EHR.Application/"] #COPY ["BMA.EHR.Infrastructure/BMA.EHR.Infrastructure.csproj", "BMA.EHR.Infrastructure/"] #COPY ["BMA.EHR.Leave/BMA.EHR.Leave.csproj", "BMA.EHR.Leave/"] # #RUN dotnet restore "BMA.EHR.Leave/BMA.EHR.Leave.csproj" #COPY . . #WORKDIR "/src/BMA.EHR.Leave" #RUN dotnet build "BMA.EHR.Leave.csproj" -c Release -o /app/build # #FROM build AS publish #RUN dotnet publish "BMA.EHR.Leave.csproj" -c Release -o /app/publish /p:UseAppHost=false # #FROM base AS final #WORKDIR /app #COPY --from=publish /app/publish . #ENTRYPOINT ["dotnet", "BMA.EHR.Leave.dll"] # # --------------------------- # Base image สำหรับ runtime # --------------------------- FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base # ตั้งค่า TimeZone ENV TZ=Asia/Bangkok RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone WORKDIR /app EXPOSE 80 EXPOSE 443 # --------------------------- # Build stage # --------------------------- FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build WORKDIR /src # 1. Copy เฉพาะ .csproj ไฟล์และ restore เพื่อใช้ cache ได้ COPY ["BMA.EHR.Domain/BMA.EHR.Domain.csproj", "BMA.EHR.Domain/"] COPY ["BMA.EHR.Application/BMA.EHR.Application.csproj", "BMA.EHR.Application/"] COPY ["BMA.EHR.Infrastructure/BMA.EHR.Infrastructure.csproj", "BMA.EHR.Infrastructure/"] COPY ["BMA.EHR.Leave/BMA.EHR.Leave.csproj", "BMA.EHR.Leave/"] RUN dotnet restore "BMA.EHR.Leave/BMA.EHR.Leave.csproj" # 2. Copy source code ทั้งหมดหลัง restore เพื่อไม่ให้ cache พังง่าย COPY . . WORKDIR "/src/BMA.EHR.Leave" # 3. Build แบบ Release RUN dotnet build "BMA.EHR.Leave.csproj" -c Release -o /app/build # --------------------------- # Publish stage # --------------------------- FROM build AS publish RUN dotnet publish "BMA.EHR.Leave.csproj" -c Release -o /app/publish /p:UseAppHost=false # --------------------------- # Final runtime image # --------------------------- FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "BMA.EHR.Leave.dll"]