84 lines
2.6 KiB
Docker
84 lines
2.6 KiB
Docker
##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"]
|