diff --git a/.github/workflows/2-pre-release.yaml b/.github/workflows/2-pre-release.yaml
index ddd6afe72..816cc7e66 100644
--- a/.github/workflows/2-pre-release.yaml
+++ b/.github/workflows/2-pre-release.yaml
@@ -23,8 +23,6 @@ jobs:
permissions:
packages: write
steps:
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to the Container registry
diff --git a/.github/workflows/4-release.yaml b/.github/workflows/4-release.yaml
index b4eaa34d1..54fcc9deb 100644
--- a/.github/workflows/4-release.yaml
+++ b/.github/workflows/4-release.yaml
@@ -14,8 +14,6 @@ jobs:
permissions:
packages: write
steps:
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to the Container registry
diff --git a/src/CarbonAware.WebApi/src/Dockerfile b/src/CarbonAware.WebApi/src/Dockerfile
index f01e27777..068357d4a 100644
--- a/src/CarbonAware.WebApi/src/Dockerfile
+++ b/src/CarbonAware.WebApi/src/Dockerfile
@@ -1,23 +1,33 @@
-FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env
+# For OpenAPI document
+FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS openapi-env
WORKDIR /app
+ENV DOTNET_ROLL_FORWARD LatestMajor
+COPY . ./
+RUN dotnet build CarbonAware.WebApi/src/CarbonAware.WebApi.csproj -o build
+WORKDIR /app/CarbonAware.WebApi/src
+RUN dotnet tool restore && \
+ dotnet tool run swagger tofile --output /app/build/swagger.yaml --yaml /app/build/CarbonAware.WebApi.dll v1
+
+# Builder
+FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env
+ARG TARGETARCH
+WORKDIR /app
ENV DOTNET_ROLL_FORWARD LatestMajor
# Copy everything from source
COPY . ./
# Use implicit restore to build and publish
-RUN dotnet publish CarbonAware.WebApi/src/CarbonAware.WebApi.csproj -c Release -o publish
-# Generate OpenAPI spec
-WORKDIR /app/CarbonAware.WebApi/src
-RUN dotnet tool restore && \
- mkdir -p /app/publish/wwwroot/api/v1 && \
- dotnet tool run swagger tofile --output /app/publish/wwwroot/api/v1/swagger.yaml --yaml /app/publish/CarbonAware.WebApi.dll v1
+RUN dotnet publish CarbonAware.WebApi/src/CarbonAware.WebApi.csproj -a $TARGETARCH -o publish
+
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# Install curl for health check
RUN apt-get update && \
apt-get install -y --no-install-recommends curl
-# Copy artifacts from build-env
+# Copy artifacts
WORKDIR /app
COPY --from=build-env /app/publish .
+RUN mkdir -p /app/wwwroot/api/v1
+COPY --from=openapi-env /app/build/swagger.yaml /app/wwwroot/api/v1/
ENTRYPOINT ["dotnet", "CarbonAware.WebApi.dll"]
diff --git a/src/GSF.CarbonAware/src/GSF.CarbonAware.csproj b/src/GSF.CarbonAware/src/GSF.CarbonAware.csproj
index d49c11307..6bb9fac4b 100644
--- a/src/GSF.CarbonAware/src/GSF.CarbonAware.csproj
+++ b/src/GSF.CarbonAware/src/GSF.CarbonAware.csproj
@@ -37,6 +37,7 @@
+
@@ -57,4 +58,4 @@
-
\ No newline at end of file
+