-
Notifications
You must be signed in to change notification settings - Fork 8
add support for ARM64 architecture #29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
dengxuezhao
wants to merge
5
commits into
vanadium23:main
Choose a base branch
from
dengxuezhao:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
0e5ef2b
add support for ARM64 architecture
dengxuezhao 8c1228c
Merge pull request #1 from dengxuezhao/feature-docker-arm64
dengxuezhao 4da9790
add support for ARM64 architecture
dengxuezhao 4c33b0e
Merge pull request #2 from dengxuezhao/feature-docker-arm64
dengxuezhao e3ac78e
Update publish.yml
dengxuezhao File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,29 +1,60 @@ | ||
| # Dockerfile (Minimal Changes) | ||
|
|
||
| # Define target architecture as a build argument. | ||
| # BuildKit automatically sets this when using --platform. | ||
| ARG TARGETARCH | ||
|
|
||
| # Step 1: Modules caching | ||
| # Use a multi-arch Go base image. BuildKit will select the correct one based on TARGETARCH. | ||
| FROM golang:1.22.5-alpine as modules | ||
|
|
||
| # Set GOOS and GOARCH based on the build argument for this stage. | ||
| # This ensures go mod download caches for the correct target architecture. | ||
| ENV GOOS=linux GOARCH=${TARGETARCH} | ||
|
|
||
| COPY go.mod go.sum /modules/ | ||
| WORKDIR /modules | ||
| RUN go mod download | ||
|
|
||
| # Step 2: Builder | ||
| # Use a multi-arch Go base image for the builder stage. | ||
| FROM golang:1.22.5-alpine as builder | ||
| RUN apk add --update gcc musl-dev | ||
| RUN apk add --update gcc musl-dev # Keep update for minimal change | ||
|
|
||
| # Set GOOS and GOARCH for the builder environment. | ||
| # This will be used by the go build command. | ||
| ENV GOOS=linux GOARCH=${TARGETARCH} | ||
|
|
||
| # Copy modules cache built for the *same* target architecture | ||
| COPY --from=modules /go/pkg /go/pkg | ||
|
|
||
| COPY . /app | ||
| WORKDIR /app | ||
|
|
||
| # Define KOMPANION_VERSION as a build argument | ||
| ARG KOMPANION_VERSION=local | ||
| ENV KOMPANION_VERSION=$KOMPANION_VERSION | ||
|
|
||
| RUN GOOS=linux GOARCH=amd64 \ | ||
| go build -ldflags "-X main.Version=$KOMPANION_VERSION" -tags migrate -o /bin/app ./cmd/app | ||
| # Build the application. Use the GOOS/GOARCH from the environment. | ||
| # REMOVE the hardcoded GOOS=linux GOARCH=amd64. | ||
| RUN go build -ldflags "-X main.Version=$KOMPANION_VERSION" -tags migrate -o /bin/app ./cmd/app | ||
|
|
||
| # Step 3: Final | ||
| # Keep the same base image as the original for minimal change. | ||
| # This image is multi-arch, and BuildKit will select the correct variant. | ||
| FROM golang:1.22.5-alpine | ||
| ENV GIN_MODE=release | ||
|
|
||
| ENV GIN_MODE=release | ||
| WORKDIR / | ||
|
|
||
| # Copy web assets from the builder stage | ||
| COPY --from=builder /app/web /web | ||
|
|
||
| # Copy the architecture-specific binary from the builder stage | ||
| COPY --from=builder /bin/app /app | ||
|
|
||
| # Copy CA certs as in the original | ||
| COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ | ||
|
|
||
| CMD ["/app"] | ||
| # Set the command to run the application | ||
| CMD ["/app"] |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
latest will be overwritten by linux/arm64.
I prefer to set it as linux/amd64.