# BCards Test App - Multi-stage Docker build com suporte ARM64 FROM --platform=$TARGETPLATFORM mcr.microsoft.com/dotnet/aspnet:8.0 AS base WORKDIR /app EXPOSE 8080 # Criar usuário não-root para segurança RUN addgroup --group appgroup --gid 1001 && \ adduser --uid 1001 --gid 1001 --disabled-password --gecos "" appuser FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS build ARG TARGETARCH WORKDIR /src # Copiar arquivo de projeto e restaurar dependências COPY ["BCardsTestApp.csproj", "."] RUN dotnet restore "BCardsTestApp.csproj" # Copiar código fonte e compilar COPY . . RUN dotnet build "BCardsTestApp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "BCardsTestApp.csproj" -c Release -o /app/publish /p:UseAppHost=false -a $TARGETARCH # Imagem final FROM base AS final WORKDIR /app # Copiar aplicação compilada COPY --from=publish /app/publish . # Configurar usuário não-root RUN chown -R appuser:appgroup /app USER appuser # Labels para metadados LABEL maintainer="BCards Team" LABEL version="1.0" LABEL description="BCards Test Application for Infrastructure Testing" # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:8080/health || exit 1 # Configurar variáveis de ambiente padrão ENV ASPNETCORE_ENVIRONMENT=Production ENV ASPNETCORE_URLS=http://+:8080 ENV SERVER_NAME="Unknown Server" ENV SERVER_COLOR="#007bff" ENTRYPOINT ["dotnet", "BCardsTestApp.dll"]