diff --git a/Astrocore.Api/Dockerfile b/Astrocore.Api/Dockerfile index 7351a05..20896e7 100644 --- a/Astrocore.Api/Dockerfile +++ b/Astrocore.Api/Dockerfile @@ -1,45 +1,41 @@ # 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:8.0 AS base +# Install ffmpeg in its own stage so it can be cached independently of your app code +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime-base WORKDIR /app -# Install ffmpeg before switching user -RUN apt-get update && \ - apt-get install -y ffmpeg && \ - rm -rf /var/lib/apt/lists/* - -USER $APP_UID +RUN apt-get update \ + && apt-get install -y --no-install-recommends ffmpeg \ + && rm -rf /var/lib/apt/lists/* EXPOSE 8080 EXPOSE 8081 - -# This stage is used to build the service project +# Build 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" +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 +# Publish 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 +# Final +FROM runtime-base AS final WORKDIR /app -# Install ffmpeg -#RUN apt-get update && \ - #apt-get install -y ffmpeg && \ - #rm -rf /var/lib/apt/lists/* +COPY --from=publish /app/publish . +# Keep your existing behavior, but don't assume APP_UID always exists at build time +ARG APP_UID USER $APP_UID -COPY --from=publish /app/publish . -ENTRYPOINT ["dotnet", "Astrocore.Api.dll"] +ENTRYPOINT ["dotnet", "Astrocore.Api.dll"] \ No newline at end of file