BCards-Scripts-Server/test-app/Dockerfile
2025-07-22 21:24:07 -03:00

51 lines
1.5 KiB
Docker

# 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"]