Avoid QEMU emulation for .NET publish stages
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 55/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- csharp, docker
- Domain
- build-system, devops
Research direction
Read src/Dome.Server/Dome.Api/Dockerfile and src/Dome.Socket/Dome.Socket.Api/Dockerfile, focusing on the .NET SDK and runtime stages and their publish commands. Check the repository's build workflow or instructions for multi-platform builds, then build both images for linux/amd64 and linux/arm64 and compare per-platform durations. Done means both images run on their target architectures and SDK restore/publish runs natively on the build platform.
Written by the indexing model from the issue text.
Description
Summary
The server and socket Dockerfiles build both linux/amd64 and linux/arm64. Their .NET SDK build stages currently use the default target platform, which can cause SDK restore/publish to execute under QEMU for the ARM64 image on GitHub's AMD64 runners.
Proposed change
Use the BuildKit build platform for the .NET SDK stage (for example, FROM --platform=$BUILDPLATFORM ... AS build), then publish for $TARGETARCH using the .NET SDK's architecture option. Keep the runtime stage on the target platform.
Apply this to:
src/Dome.Server/Dome.Api/Dockerfilesrc/Dome.Socket/Dome.Socket.Api/Dockerfile
Acceptance criteria
- Both Dockerfiles build successfully for
linux/amd64andlinux/arm64. - The published output runs on the requested target architecture.
- The .NET SDK restore/publish steps execute natively on the runner rather than under QEMU.
- Compare per-platform build durations before and after.
- Dominant language
- C#
- Stars
- 0
- Forks
- 2
- Avg merge
- 5h 22m
- Merged PRs (30d)
- 28
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Dome-Works/DOME
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Dome-Works/DOME#129 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Dome-Works/DOME#128 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
Dome-Works/DOME#126 ·
Maintainers usually reply within 1 day
-
enhancement good first issue
Difficulty 3/5 1-2 days Newbie friendliness 35/100
Dome-Works/DOME#123 ·
Maintainers usually reply within 1 day
-
enhancement
Dome-Works/DOME#117 ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
area: core priority: low type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
RicoSuter/Namotion.Interceptor#863 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
bitfoundation/bitplatform#14428 · 1 comment ·
Maintainers usually reply within 1 day
-
area-cli
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
0.3.0
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day