diff --git a/Astrocore.Api/Dockerfile b/Astrocore.Api/Dockerfile index 9cbe401..4541aae 100644 --- a/Astrocore.Api/Dockerfile +++ b/Astrocore.Api/Dockerfile @@ -1,31 +1,45 @@ -# Build -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build -ARG BUILD_CONFIGURATION=Release -WORKDIR /src +# 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. -COPY ["Astrocore.Api/Astrocore.Api.csproj", "Astrocore.Api/"] -RUN dotnet restore "./Astrocore.Api/Astrocore.Api.csproj" - -COPY . . -WORKDIR /src/Astrocore.Api -RUN dotnet publish "./Astrocore.Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false - -# Runtime with ffmpeg already included -FROM jrottenberg/ffmpeg:6.1-ubuntu2204 AS runtime-ffmpeg - -# .NET runtime -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final +# This stage is used when running from VS in fast mode (Default for Debug configuration) +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base WORKDIR /app -# Copy ffmpeg binaries into the final image -COPY --from=runtime-ffmpeg /usr/local/bin/ffmpeg /usr/local/bin/ffmpeg -COPY --from=runtime-ffmpeg /usr/local/bin/ffprobe /usr/local/bin/ffprobe +# Install ffmpeg before switching user +RUN apt-get update && \ + apt-get install -y ffmpeg && \ + rm -rf /var/lib/apt/lists/* -COPY --from=build /app/publish . - -ARG APP_UID USER $APP_UID EXPOSE 8080 EXPOSE 8081 -ENTRYPOINT ["dotnet", "Astrocore.Api.dll"] + + +# This stage is used to build the service project +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["Astrocore.Api/Astrocore.Api.csproj", "Astrocore.Api/"] +RUN dotnet restore "./Astrocore.Api/Astrocore.Api.csproj" +COPY . . +WORKDIR "/src/Astrocore.Api" +RUN dotnet build "./Astrocore.Api.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 "./Astrocore.Api.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 + +# Install ffmpeg +#RUN apt-get update && \ + #apt-get install -y ffmpeg && \ + #rm -rf /var/lib/apt/lists/* + +USER $APP_UID + +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "Astrocore.Api.dll"] \ No newline at end of file