1+ # syntax=docker/dockerfile:1.7.0
12FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
23ARG ARCGIS_API_KEY
34ARG GEOBLAZOR_LICENSE_KEY
45ARG WFS_SERVERS
56ARG HTTP_PORT
67ARG HTTPS_PORT
7- ENV ARCGIS_API_KEY=${ARCGIS_API_KEY}
8- ENV GEOBLAZOR_LICENSE_KEY=${GEOBLAZOR_LICENSE_KEY}
9- ENV WFS_SERVERS=${WFS_SERVERS}
108
9+ # Install NodeJS and NPM
1110RUN apt-get update \
1211 && apt-get install -y ca-certificates curl gnupg \
1312 && mkdir -p /etc/apt/keyrings \
@@ -16,51 +15,63 @@ RUN apt-get update \
1615 && apt-get update \
1716 && apt-get install -y nodejs
1817
18+ # Install NPM Packages
1919WORKDIR /work
2020WORKDIR /work/src/dymaptic.GeoBlazor.Core
2121COPY ./src/dymaptic.GeoBlazor.Core/package.json ./package.json
22- RUN npm install
22+ RUN --mount=type=cache,target=/root/.npm npm install
2323
2424WORKDIR /work
25- COPY ./src/ ./src/
25+
26+ # Update GeoBlazor Build Scripts
27+ COPY ./build-tools/build-scripts ./build-tools/build-scripts
28+ COPY ./build-tools/utilities ./build-tools/utilities
29+ RUN --mount=type=cache,target=/root/.nuget/packages \
30+ dotnet run ./build-tools/build-scripts/ScriptBuilder.cs
31+
32+ # Copy Source Files
2633COPY ./*.ps1 ./
2734COPY ./Directory.Build.* ./
2835COPY ./.gitignore ./.gitignore
2936COPY ./nuget.config ./nuget.config
30- COPY ./build-tools ./build-tools
31- COPY ./build-scripts/ScriptBuilder.cs ./build-scripts/ScriptBuilder.cs
32-
33- RUN dotnet ./build-tools/GeoBlazorBuild.dll -v current
34-
35- COPY ./test/dymaptic.GeoBlazor.Core.Test.Blazor.Shared/dymaptic.GeoBlazor.Core.Test.Blazor.Shared.csproj ./test/dymaptic.GeoBlazor.Core.Test.Blazor.Shared.csproj
36- COPY ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj
37- COPY ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.Client/dymaptic.GeoBlazor.Core.Test.WebApp.Client.csproj ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.Client/dymaptic.GeoBlazor.Core.Test.WebApp.Client.csproj
38-
39- # Use UsePackageReference=false to build from source (enables code coverage with PDB symbols)
40- RUN dotnet restore ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj /p:UsePackageReference=false
41-
37+ COPY ./src/ ./src/
4238COPY ./test/dymaptic.GeoBlazor.Core.Test.Blazor.Shared ./test/dymaptic.GeoBlazor.Core.Test.Blazor.Shared
4339COPY ./test/dymaptic.GeoBlazor.Core.Test.WebApp ./test/dymaptic.GeoBlazor.Core.Test.WebApp
4440
45- RUN dotnet ./build-tools/BuildAppSettings.dll \
46- -k "$ARCGIS_API_KEY" \
47- -l "$GEOBLAZOR_LICENSE_KEY" \
41+ # Create appsettings files
42+ RUN dotnet ./build-tools/linux-x64/BuildAppSettings.dll \
43+ -k "${ARCGIS_API_KEY}" \
44+ -l "${GEOBLAZOR_LICENSE_KEY}" \
4845 -o "./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.Client/wwwroot/appsettings.json" \
4946 -o "./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.Client/wwwroot/appsettings.Production.json" \
5047 -o "./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/appsettings.json" \
5148 -o "./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/appsettings.Production.json" \
52- -w "$WFS_SERVERS"
49+ -w "${ WFS_SERVERS}"
5350
5451# Build from source with debug symbols for code coverage
5552# UsePackageReference=false builds GeoBlazor from source instead of NuGet
5653# DebugSymbols=true and DebugType=portable ensure PDB files are generated
57- RUN dotnet publish ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj \
54+ RUN --mount=type=cache,target=/root/.nuget/packages \
55+ dotnet build ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj \
56+ -c Release \
57+ /p:UsePackageReference=false \
58+ /p:DebugSymbols=true \
59+ /p:DebugType=portable \
60+ /p:GeneratePackage=false \
61+ /p:GenerateDocs=false \
62+ /p:GenerateXmlComments=false \
63+ /p:ShowScriptDialogs=false
64+
65+ RUN --mount=type=cache,target=/root/.nuget/packages \
66+ dotnet publish ./test/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp/dymaptic.GeoBlazor.Core.Test.WebApp.csproj \
5867 -c Release \
5968 /p:UsePackageReference=false \
60- /p:PipelineBuild=true \
6169 /p:DebugSymbols=true \
6270 /p:DebugType=portable \
63- /p:GeneratePack=false \
71+ /p:GeneratePackage=false \
72+ /p:GenerateDocs=false \
73+ /p:GenerateXmlComments=false \
74+ /p:ShowScriptDialogs=false \
6475 -o /app/publish
6576
6677FROM mcr.microsoft.com/dotnet/aspnet:10.0
@@ -109,6 +120,7 @@ ENV ASPNETCORE_Kestrel__Certificates__Default__Password=password
109120# Coverage configuration (can be overridden via environment)
110121ENV COVERAGE_ENABLED=false
111122ENV COVERAGE_FORMAT=xml
123+ ENV SESSION_ID=WEB_APP
112124
113125# Copy entrypoint script
114126COPY ./test/dymaptic.GeoBlazor.Core.Test.Automation/docker-entrypoint.sh /docker-entrypoint.sh
@@ -117,4 +129,4 @@ RUN chmod +x /docker-entrypoint.sh
117129USER info
118130EXPOSE ${HTTP_PORT} ${HTTPS_PORT}
119131ENTRYPOINT ["/docker-entrypoint.sh" ]
120- CMD ["dotnet" , "dymaptic.GeoBlazor.Core.Test.WebApp.dll" ]
132+ CMD ["dotnet" , "dymaptic.GeoBlazor.Core.Test.WebApp.dll" ]
0 commit comments