academia/deploy/docker/Dockerfile.api

31 lines
947 B
Docker

# Backend API - Multi-stage optimized build
FROM mcr.microsoft.com/dotnet/sdk:10.0-alpine AS build
WORKDIR /src
# Copy csproj files first for layer caching
COPY src/backend/Domain/*.csproj Domain/
COPY src/backend/Application/*.csproj Application/
COPY src/backend/Adapters/Driven/Persistence/*.csproj Adapters/Driven/Persistence/
COPY src/backend/Adapters/Driving/Api/*.csproj Adapters/Driving/Api/
COPY src/backend/Host/*.csproj Host/
# Restore dependencies
RUN dotnet restore Host/Host.csproj
# Copy source and build
COPY src/backend/ .
RUN dotnet publish Host/Host.csproj -c Release -o /app --no-restore
# Runtime image
FROM mcr.microsoft.com/dotnet/aspnet:10.0-alpine AS runtime
WORKDIR /app
COPY --from=build /app .
ENV ASPNETCORE_URLS=http://+:8080
ENV ASPNETCORE_ENVIRONMENT=Production
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=3s CMD wget -q --spider http://localhost:8080/health || exit 1
ENTRYPOINT ["dotnet", "Host.dll"]