2026-03-19 13:35:53 +01:00
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
2026-04-10 12:01:58 +02:00
# This stage is used to build the userscript project
FROM node:lts-alpine AS build-userscript
WORKDIR /src
COPY client .
RUN npm ci
RUN npm run build
#RUN ls -la /src/dist
2026-03-19 13:35:53 +01:00
# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
ARG BUILD_CONFIGURATION = Release
WORKDIR /src
2026-04-10 12:01:58 +02:00
COPY [ "server/src/CPATapi.Server/CPATapi.Server.csproj" , "server/src/CPATapi.Server/CPATapi.Server.csproj" ]
RUN dotnet restore "server/src/CPATapi.Server/CPATapi.Server.csproj"
2026-03-19 13:35:53 +01:00
COPY . .
2026-04-10 12:01:58 +02:00
WORKDIR "/src/server/src/CPATapi.Server "
2026-04-13 14:46:33 +02:00
COPY --from= build-userscript [ "/src/dist/3CX TAPI.prod.user.js" , "./wwwroot/3CX_TAPI.user.js" ]
2026-03-19 13:35:53 +01:00
RUN dotnet build "./CPATapi.Server.csproj" -c $BUILD_CONFIGURATION -o /app/build
# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION = Release
RUN dotnet publish "./CPATapi.Server.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost= false
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from= publish /app/publish .
ENTRYPOINT [ "dotnet" , "CPATapi.Server.dll" ]