Skip to content

Commit 1385505

Browse files
authored
Multi-platform conainer image build (#26)
* Update Dockerfile to support multi-platform * Update Dockerfiles to support multi-platform
1 parent 04df798 commit 1385505

File tree

6 files changed

+45
-10
lines changed

6 files changed

+45
-10
lines changed

.github/workflows/build-container.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,16 @@ jobs:
101101
with:
102102
images: ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/${{ inputs.image_name }}
103103

104+
- name: Set up Docker Buildx
105+
if: steps.check-dockerfile.outputs.exists == 'true'
106+
uses: docker/setup-buildx-action@v3
107+
104108
- name: Build and push Docker image
105109
if: steps.check-dockerfile.outputs.exists == 'true'
106110
id: push
107111
uses: docker/build-push-action@v6
108112
with:
113+
platforms: linux/amd64,linux/arm64
109114
push: true
110115
context: ${{ github.workspace }}/${{ inputs.image_name }}
111116
file: ${{ github.workspace }}/${{ inputs.image_name }}/Dockerfile.${{ inputs.extension }}

awesome-copilot/Dockerfile.http

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
# syntax=docker/dockerfile:1
22

3-
FROM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
3+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
44

55
COPY ./src/McpAwesomeCopilot.Common /source/McpAwesomeCopilot.Common
66
COPY ./src/McpAwesomeCopilot.ContainerApp /source/McpAwesomeCopilot.ContainerApp
77

88
WORKDIR /source/McpAwesomeCopilot.ContainerApp
99

10-
RUN dotnet publish -c Release -o /app
10+
ARG TARGETARCH
11+
RUN case "$TARGETARCH" in \
12+
"amd64") RID="linux-musl-x64" ;; \
13+
"arm64") RID="linux-musl-arm64" ;; \
14+
*) RID="linux-musl-x64" ;; \
15+
esac && \
16+
dotnet publish -c Release -o /app -r $RID --self-contained false
1117

1218
FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine AS final
1319

awesome-copilot/Dockerfile.stdio

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
# syntax=docker/dockerfile:1
22

3-
FROM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
3+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
44

55
COPY ./src/McpAwesomeCopilot.Common /source/McpAwesomeCopilot.Common
66
COPY ./src/McpAwesomeCopilot.ConsoleApp /source/McpAwesomeCopilot.ConsoleApp
77

88
WORKDIR /source/McpAwesomeCopilot.ConsoleApp
99

10-
RUN dotnet publish -c Release -o /app
10+
ARG TARGETARCH
11+
RUN case "$TARGETARCH" in \
12+
"amd64") RID="linux-musl-x64" ;; \
13+
"arm64") RID="linux-musl-arm64" ;; \
14+
*) RID="linux-musl-x64" ;; \
15+
esac && \
16+
dotnet publish -c Release -o /app -r $RID --self-contained false
1117

1218
FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine AS final
1319

markdown-to-html/Dockerfile.http

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
# syntax=docker/dockerfile:1
22

3-
FROM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
3+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
44

55
COPY ./src/McpMarkdownToHtml.Common /source/McpMarkdownToHtml.Common
66
COPY ./src/McpMarkdownToHtml.ContainerApp /source/McpMarkdownToHtml.ContainerApp
77

88
WORKDIR /source/McpMarkdownToHtml.ContainerApp
99

10-
RUN dotnet publish -c Release -o /app
10+
ARG TARGETARCH
11+
RUN case "$TARGETARCH" in \
12+
"amd64") RID="linux-musl-x64" ;; \
13+
"arm64") RID="linux-musl-arm64" ;; \
14+
*) RID="linux-musl-x64" ;; \
15+
esac && \
16+
dotnet publish -c Release -o /app -r $RID --self-contained false
1117

1218
FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine AS final
1319

markdown-to-html/Dockerfile.stdio

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
# syntax=docker/dockerfile:1
22

3-
FROM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
3+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
44

55
COPY ./src/McpMarkdownToHtml.Common /source/McpMarkdownToHtml.Common
66
COPY ./src/McpMarkdownToHtml.ConsoleApp /source/McpMarkdownToHtml.ConsoleApp
77

88
WORKDIR /source/McpMarkdownToHtml.ConsoleApp
99

10-
RUN dotnet publish -c Release -o /app
10+
ARG TARGETARCH
11+
RUN case "$TARGETARCH" in \
12+
"amd64") RID="linux-musl-x64" ;; \
13+
"arm64") RID="linux-musl-arm64" ;; \
14+
*) RID="linux-musl-x64" ;; \
15+
esac && \
16+
dotnet publish -c Release -o /app -r $RID --self-contained false
1117

1218
FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine AS final
1319

todo-list/Dockerfile.http

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
# syntax=docker/dockerfile:1
22

3-
FROM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
3+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
44

55
COPY . /source
66

77
WORKDIR /source/src/McpTodoList.ContainerApp
88

9-
RUN dotnet publish -c Release -o /app
9+
ARG TARGETARCH
10+
RUN case "$TARGETARCH" in \
11+
"amd64") RID="linux-musl-x64" ;; \
12+
"arm64") RID="linux-musl-arm64" ;; \
13+
*) RID="linux-musl-x64" ;; \
14+
esac && \
15+
dotnet publish -c Release -o /app -r $RID --self-contained false
1016

1117
FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine AS final
1218

0 commit comments

Comments
 (0)