fix: novo publish stage no dockerfile.release
All checks were successful
PR Validation for Release / Validate Pull Request (pull_request) Successful in 53s
PR Validation for Release / Ready for Merge (pull_request) Successful in 0s

This commit is contained in:
Ricardo Carneiro 2025-07-25 19:55:45 -03:00
parent 660959bd4c
commit efb6a4e5d7

View File

@ -24,7 +24,7 @@ RUN apt-get update && \
RUN mkdir -p /app/uploads /app/logs \ RUN mkdir -p /app/uploads /app/logs \
&& chmod 755 /app/uploads /app/logs && chmod 755 /app/uploads /app/logs
# Build stage - use build platform for compilation # Build stage - restore and publish
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS build FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG TARGETPLATFORM ARG TARGETPLATFORM
ARG VERSION ARG VERSION
@ -39,6 +39,7 @@ COPY ["src/BCards.Web/BCards.Web.csproj", "src/BCards.Web/"]
RUN case "$TARGETPLATFORM" in \ RUN case "$TARGETPLATFORM" in \
"linux/amd64") RID="linux-x64" ;; \ "linux/amd64") RID="linux-x64" ;; \
"linux/arm64") RID="linux-arm64" ;; \ "linux/arm64") RID="linux-arm64" ;; \
*) echo "Unsupported platform: $TARGETPLATFORM" && exit 1 ;; \
esac && \ esac && \
echo "🔧 Restoring for RID: $RID" && \ echo "🔧 Restoring for RID: $RID" && \
dotnet restore "src/BCards.Web/BCards.Web.csproj" --runtime $RID dotnet restore "src/BCards.Web/BCards.Web.csproj" --runtime $RID
@ -47,37 +48,17 @@ RUN case "$TARGETPLATFORM" in \
COPY . . COPY . .
WORKDIR "/src/src/BCards.Web" WORKDIR "/src/src/BCards.Web"
# Build application with Release configuration # Publish diretamente (build + publish em um comando)
RUN case "$TARGETPLATFORM" in \
"linux/amd64") RID="linux-x64" ;; \
"linux/arm64") RID="linux-arm64" ;; \
esac && \
echo "🔨 Building for RID: $RID" && \
dotnet build "BCards.Web.csproj" \
-c Release \
-o /app/build \
--no-restore \
--runtime $RID \
-p:Version=$VERSION \
-p:InformationalVersion=$COMMIT
# Publish stage - optimize for target platform
FROM build AS publish
ARG TARGETPLATFORM
ARG VERSION
ARG COMMIT
# Publish with cross-compilation friendly settings
RUN case "$TARGETPLATFORM" in \ RUN case "$TARGETPLATFORM" in \
"linux/amd64") RID="linux-x64" ;; \ "linux/amd64") RID="linux-x64" ;; \
"linux/arm64") RID="linux-arm64" ;; \ "linux/arm64") RID="linux-arm64" ;; \
*) echo "Unsupported platform: $TARGETPLATFORM" && exit 1 ;; \
esac && \ esac && \
echo "📦 Publishing for RID: $RID" && \ echo "📦 Publishing for RID: $RID" && \
dotnet publish "BCards.Web.csproj" \ dotnet publish "BCards.Web.csproj" \
-c Release \ -c Release \
-o /app/publish \ -o /app/publish \
--no-restore \ --no-restore \
--no-build \
--runtime $RID \ --runtime $RID \
--self-contained false \ --self-contained false \
-p:PublishReadyToRun=false \ -p:PublishReadyToRun=false \
@ -102,7 +83,7 @@ LABEL environment="release"
WORKDIR /app WORKDIR /app
# Copy published application # Copy published application
COPY --from=publish /app/publish . COPY --from=build /app/publish .
# Create non-root user for security # Create non-root user for security
RUN groupadd -r bcards && useradd -r -g bcards bcards \ RUN groupadd -r bcards && useradd -r -g bcards bcards \