# https://hub.docker.com/_/microsoft-dotnet
FROM 483193324480.dkr.ecr.us-east-1.amazonaws.com/dotnet/sdk:5.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY ./Sony.Filtr/*.sln .
COPY ./Sony.Filtr/MusicMatch.Core/*.csproj ./MusicMatch.Core/
COPY ./Sony.Filtr/PetaPoco/*.csproj ./PetaPoco/
COPY ./Sony.Filtr/RateGateAsync/*.csproj ./RateGateAsync/
COPY ./Sony.Filtr/Sony.Filtr.AdminSearch/*.csproj ./Sony.Filtr.AdminSearch/
COPY ./Sony.Filtr/Sony.Filtr.ApolloAPI/*.csproj ./Sony.Filtr.ApolloAPI/
COPY ./Sony.Filtr/Sony.Filtr.DspWebAPI/*.csproj ./Sony.Filtr.DspWebAPI/
COPY ./Sony.Filtr/Sony.Filtr.AppleMusic.BestOfTheWeek/*.csproj ./Sony.Filtr.AppleMusic.BestOfTheWeek/
COPY ./Sony.Filtr/Sony.Filtr.AppleMusic/*.csproj ./Sony.Filtr.AppleMusic/
COPY ./Sony.Filtr/Sony.Filtr.Applications/*.csproj ./Sony.Filtr.Applications/
COPY ./Sony.Filtr/Sony.Filtr.Bootstrap/*.csproj ./Sony.Filtr.Bootstrap/
COPY ./Sony.Filtr/Sony.Filtr.Buzz/*.csproj ./Sony.Filtr.Buzz/
COPY ./Sony.Filtr/Sony.Filtr.ContentManagement/*.csproj ./Sony.Filtr.ContentManagement/
COPY ./Sony.Filtr/Sony.Filtr.Contracts/*.csproj ./Sony.Filtr.Contracts/
COPY ./Sony.Filtr/Sony.Filtr.Database/*.csproj ./Sony.Filtr.Database/
COPY ./Sony.Filtr/Sony.Filtr.DeezerAPI/*.csproj ./Sony.Filtr.DeezerAPI/
COPY ./Sony.Filtr/Sony.Filtr.DistributedCaching/*.csproj ./Sony.Filtr.DistributedCaching/
COPY ./Sony.Filtr/Sony.Filtr.ErrorLogging/*.csproj ./Sony.Filtr.ErrorLogging/
COPY ./Sony.Filtr/Sony.Filtr.Globalization/*.csproj ./Sony.Filtr.Globalization/
COPY ./Sony.Filtr/Sony.Filtr.MusicServices/*.csproj ./Sony.Filtr.MusicServices/
COPY ./Sony.Filtr/Sony.Filtr.PlaylistContainer/*.csproj ./Sony.Filtr.PlaylistContainer/
COPY ./Sony.Filtr/Sony.Filtr.PlaylistGeneration/*.csproj ./Sony.Filtr.PlaylistGeneration/
COPY ./Sony.Filtr/Sony.Filtr.PlaylistSynchronization/*.csproj ./Sony.Filtr.PlaylistSynchronization/
COPY ./Sony.Filtr/Sony.Filtr.Playlists/*.csproj ./Sony.Filtr.Playlists/
COPY ./Sony.Filtr/Sony.Filtr.ScheduledTask/*.csproj ./Sony.Filtr.ScheduledTask/
COPY ./Sony.Filtr/Sony.Filtr.Search/*.csproj ./Sony.Filtr.Search/
COPY ./Sony.Filtr/Sony.Filtr.SoundCloud/*.csproj ./Sony.Filtr.SoundCloud/
COPY ./Sony.Filtr/Sony.Filtr.Spotify/*.csproj ./Sony.Filtr.Spotify/
COPY ./Sony.Filtr/Sony.Filtr.SpotifyAnalytics/*.csproj ./Sony.Filtr.SpotifyAnalytics/
COPY ./Sony.Filtr/Sony.Filtr.SpotifyImages/*.csproj ./Sony.Filtr.SpotifyImages/
COPY ./Sony.Filtr/Sony.Filtr.SpotifyWebAPI/*.csproj ./Sony.Filtr.SpotifyWebAPI/
COPY ./Sony.Filtr/Sony.Filtr.Tasks/*.csproj ./Sony.Filtr.Tasks/
COPY ./Sony.Filtr/Sony.Filtr.Utility/*.csproj ./Sony.Filtr.Utility/
COPY ./Sony.Filtr/Sony.Filtr.YouTube/*.csproj ./Sony.Filtr.YouTube/
COPY ./Sony.Filtr/Sony.Filtr.VendorToSpotify/*.csproj ./Sony.Filtr.VendorToSpotify/
COPY ./Sony.Filtr/Sony.Filtr.Functional/*.csproj ./Sony.Filtr.Functional/
COPY ./Sony.Filtr/Sony.Filtr/*.csproj ./Sony.Filtr/

RUN mkdir -p /source/nugetPackages && dotnet restore -s https://api.nuget.org/v3/index.json -s nugetPackages --verbosity n

# copy everything else and build app
COPY ./Sony.Filtr/. ./

WORKDIR /source/Sony.Filtr.ScheduledTask

RUN dotnet build "Sony.Filtr.ScheduledTask.csproj" -c Release -o /app/build

RUN dotnet publish "Sony.Filtr.ScheduledTask.csproj" -c Release -o /app/publish --self-contained false --no-restore

# final stage/image
FROM 483193324480.dkr.ecr.us-east-1.amazonaws.com/dotnet/runtime:5.0

ARG VERSION
ARG REVISION
ARG BUILDTIME

LABEL com.datadoghq.tags.service=net-jobs
LABEL com.datadoghq.tags.version=${VERSION}
LABEL REVISION=${REVISION}
LABEL BUILDTIME=${BUILDTIME}

ENV DD_SERVICE=net-jobs
ENV DD_VERSION=${VERSION}
ENV SENTRY_PROJECT=net-jobs

RUN sed -i 's/DEFAULT\@SECLEVEL\=2/DEFAULT\@SECLEVEL\=1/g' /etc/ssl/openssl.cnf \
    && apt-get update \
    && DEBIAN_FRONTEND="noninteractive" apt-get install --yes --no-install-recommends jq awscli libc6-dev libgdiplus python-pip \
    && rm -rf /var/lib/apt/lists/* \
    && pip --no-cache-dir install datadog

WORKDIR /app

COPY ./docker-entrypoint.sh /docker-entrypoint.sh
COPY --from=build /app/publish/ ./

ENTRYPOINT ["/docker-entrypoint.sh"]
