FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS publish
WORKDIR /
COPY */*.csproj .
RUN for file in $(ls *.csproj); do mkdir -p ${file%.*}/ && mv $file ${file%.*}/; done
COPY *.sln .

RUN dotnet restore --runtime alpine-x64
COPY . .
RUN dotnet publish "WebApi/WebApi.csproj" -c Release -o /app/publish \
    --no-restore \
    --runtime alpine-x64 \
    --self-contained true \
    /p:PublishTrimmed=true \
    /p: PublishSingleFile=true

FROM mcr.microsoft.com/dotnet/runtime-deps:6.0-alpine AS final
WORKDIR /app

EXPOSE 80
EXPOSE 443
COPY --from=publish /app/publish .
COPY /WebApi/appsettings.json .

ENTRYPOINT ["./WebApi"]