Files
2026-03-17 11:20:00 -05:00

73 lines
3.5 KiB
Docker

# Build stage
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
ARG PAT=bh2lq3jibktw67b2wdbqyfln7cd3je6lk52kijntpj43v6kimpgq
WORKDIR /source
# Install credential provider for authenticated Azure DevOps feeds
# Debian 10 (buster) is archived; repoint sources to archive.debian.org before installing packages.
RUN sed -i 's|deb.debian.org/debian|archive.debian.org/debian|g; s|security.debian.org/debian-security|archive.debian.org/debian-security|g; s|deb.debian.org/debian-security|archive.debian.org/debian-security|g' /etc/apt/sources.list && \
apt-get update && apt-get install -y --no-install-recommends ca-certificates curl unzip && \
update-ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Configure NuGet with Azure DevOps feed credentials (avoids plugin dependency)
RUN mkdir -p /root/.nuget/NuGet && \
cat > /root/.nuget/NuGet/NuGet.Config <<EOF
<configuration>
<packageSources>
<clear />
<add key="LCU-Internal" value="https://landmarkcu.pkgs.visualstudio.com/_packaging/LCU-Internal/nuget/v3/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
<packageSourceCredentials>
<LCU-Internal>
<add key="Username" value="pat" />
<add key="ClearTextPassword" value="${PAT}" />
</LCU-Internal>
</packageSourceCredentials>
<fallbackPackageFolders>
<clear />
</fallbackPackageFolders>
</configuration>
EOF
# Copy solution and project files and restore
COPY LCU.API.Collections.CollectionsApi.sln .
COPY LCU.API.Collections.CollectionsApi/LCU.API.Collections.CollectionsApi.csproj ./LCU.API.Collections.CollectionsApi/
COPY LCU.API.Collections.CollectionsApiLib/LCU.API.Collections.CollectionsApiLib.csproj ./LCU.API.Collections.CollectionsApiLib/
COPY LCU.API.Collections.CollectionsApiTests/LCU.API.Collections.CollectionsApiTests.csproj ./LCU.API.Collections.CollectionsApiTests/
RUN dotnet restore -s "https://landmarkcu.pkgs.visualstudio.com/_packaging/LCU-Internal/nuget/v3/index.json" -s "https://api.nuget.org/v3/index.json" ./LCU.API.Collections.CollectionsApi.sln
# Copy full source and build
COPY . .
RUN dotnet restore -s "https://landmarkcu.pkgs.visualstudio.com/_packaging/LCU-Internal/nuget/v3/index.json" -s "https://api.nuget.org/v3/index.json" ./LCU.API.Collections.CollectionsApi.sln
RUN dotnet build ./LCU.API.Collections.CollectionsApi/LCU.API.Collections.CollectionsApi.csproj -c Release --no-restore
# Test stage
FROM build AS test
WORKDIR /source
RUN dotnet test ./LCU.API.Collections.CollectionsApiTests/LCU.API.Collections.CollectionsApiTests.csproj -c Release --no-restore --logger "trx;LogFileName=test_results.trx"
# Publish stage
FROM build AS publish
WORKDIR /source
RUN dotnet publish ./LCU.API.Collections.CollectionsApi/LCU.API.Collections.CollectionsApi.csproj -c Release -o /app/publish --no-restore
# Runtime stage
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS final
# Debian 10 (buster) is archived; repoint sources to archive.debian.org before installing packages.
RUN sed -i 's|deb.debian.org/debian|archive.debian.org/debian|g; s|security.debian.org/debian-security|archive.debian.org/debian-security|g; s|deb.debian.org/debian-security|archive.debian.org/debian-security|g' /etc/apt/sources.list && \
apt-get update && \
apt-get install -y --no-install-recommends libicu-dev tzdata && \
rm -rf /var/lib/apt/lists/*
ENV TZ=America/Chicago
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
ENV ASPNETCORE_ENVIRONMENT=Development
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "LCU.API.Collections.CollectionsApi.dll"]