Quellcode durchsuchen

reverted dockerfile

Tim Jones vor 1 Monat
Ursprung
Commit
412da0dd77
1 geänderte Dateien mit 33 neuen und 11 gelöschten Zeilen
  1. 33 11
      RackPeek.Web/Dockerfile

+ 33 - 11
RackPeek.Web/Dockerfile

@@ -1,4 +1,18 @@
-FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
+# -----------------------------
+# Runtime base
+# -----------------------------
+FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
+
+ARG APP_UID=1000
+ENV APP_UID=$APP_UID
+
+WORKDIR /app
+EXPOSE 8080
+
+# -----------------------------
+# Build stage
+# -----------------------------
+FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
 ARG BUILD_CONFIGURATION=Release
 WORKDIR /src
 
@@ -11,30 +25,36 @@ RUN dotnet restore "RackPeek.Web/RackPeek.Web.csproj"
 
 COPY . .
 
-# Build Web
+# Publish Web
 WORKDIR "/src/RackPeek.Web"
 RUN dotnet publish "./RackPeek.Web.csproj" -c $BUILD_CONFIGURATION -o /app/web-publish /p:UseAppHost=false
 
-# Build CLI
+# Publish CLI
 WORKDIR "/src/RackPeek"
 RUN dotnet publish "./RackPeek.csproj" -c $BUILD_CONFIGURATION -o /app/cli-publish /p:UseAppHost=false
+
+
+# -----------------------------
+# Final runtime image
+# -----------------------------
 FROM base AS final
 
 WORKDIR /app
 
 USER root
 
-# Create shared config dir
-RUN mkdir -p /app/config && chown -R $APP_UID /app/config
+# Create shared config directory safely
+RUN mkdir -p /app/config \
+    && chown -R ${APP_UID}:0 /app/config \
+    && chmod -R g=u /app/config
+
 VOLUME ["/app/config"]
 
-# Copy Web app
+# Copy published outputs
 COPY --from=build /app/web-publish .
-
-# Copy CLI publish output
 COPY --from=build /app/cli-publish /usr/local/bin/rpk-dir
 
-# If AppHost exists, use it. Otherwise create wrapper.
+# Create CLI wrapper
 RUN if [ -f /usr/local/bin/rpk-dir/RackPeek ]; then \
         mv /usr/local/bin/rpk-dir/RackPeek /usr/local/bin/rpk; \
     else \
@@ -42,9 +62,11 @@ RUN if [ -f /usr/local/bin/rpk-dir/RackPeek ]; then \
         chmod +x /usr/local/bin/rpk; \
     fi
 
-# Set environment variable so CLI uses shared config
+# Make sure ASP.NET binds correctly in containers
+ENV ASPNETCORE_URLS=http://+:8080
 ENV RPK_YAML_DIR=/app/config
 
-USER $APP_UID
+# Drop privileges
+USER ${APP_UID}
 
 ENTRYPOINT ["dotnet", "RackPeek.Web.dll"]