29 lines
1.2 KiB
Docker
29 lines
1.2 KiB
Docker
# ---------- Build ----------
|
|
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
|
|
WORKDIR /src
|
|
|
|
# copy ไฟล์โครงการทีละตัวเพื่อ cache restore
|
|
COPY AMREZ.EOP.sln ./
|
|
COPY AMREZ.EOP.API/AMREZ.EOP.API.csproj AMREZ.EOP.API/
|
|
COPY AMREZ.EOP.Application/AMREZ.EOP.Application.csproj AMREZ.EOP.Application/
|
|
COPY AMREZ.EOP.Abstractions/AMREZ.EOP.Abstractions.csproj AMREZ.EOP.Abstractions/
|
|
COPY AMREZ.EOP.Contracts/AMREZ.EOP.Contracts.csproj AMREZ.EOP.Contracts/
|
|
COPY AMREZ.EOP.Domain/AMREZ.EOP.Domain.csproj AMREZ.EOP.Domain/
|
|
COPY AMREZ.EOP.Infrastructures/AMREZ.EOP.Infrastructures.csproj AMREZ.EOP.Infrastructures/
|
|
|
|
RUN dotnet restore AMREZ.EOP.sln
|
|
|
|
# ค่อย copy ทั้ง repo แล้ว publish (ไม่ต้อง restore ซ้ำ)
|
|
COPY . .
|
|
RUN dotnet publish AMREZ.EOP.API/AMREZ.EOP.API.csproj -c Release -o /app/publish /p:UseAppHost=false --no-restore
|
|
|
|
# ---------- Runtime ----------
|
|
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS final
|
|
WORKDIR /app
|
|
# ให้ชัดเจน: Kestrel ฟังที่ 8080
|
|
ENV ASPNETCORE_URLS=http://0.0.0.0:8080
|
|
EXPOSE 8080
|
|
|
|
COPY --from=build /app/publish ./
|
|
ENTRYPOINT ["dotnet", "AMREZ.EOP.API.dll"]
|