diff options
author | Saurabh Shinde <37367457+saurabh10041998@users.noreply.github.com> | 2024-09-26 20:27:37 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-26 09:57:37 -0500 |
commit | 0c72f881a635e258f86a7cd4346ee842699061e1 (patch) | |
tree | 4172bc2f4eaa5f375d60c65c3906b1258446fa33 | |
parent | 8195e2d63845c9a1053cfa976046821d6e6ac302 (diff) |
Fix Docker image build failure (#13938)
## Description
While building the docker image under `nushell/docker` directory,
following build failure observed.
![nushell-docker-error](https://github.com/user-attachments/assets/972048d7-b001-4325-b947-93e95b98f4d1)
The problem here is the following lines of code that decide which
`nushell` binary to download, extract, and install
https://github.com/nushell/nushell/blob/main/docker/Dockerfile#L16-L19
The issue is especially with wildcard asterisk (*) which downloads both
`amd64` and `arm64` binary while building.
## Fix
Introduced build arg `TARGETARCH` which will be populated implicitly by
docker `build/buildx` which will help us to decide which binary to
download.
## User-Facing Changes
None.
## Testing Details
Tested building docker image on both `amd64` and `arm64` systems.
**amd64/x86_64**
![nushell-docker-amd64](https://github.com/user-attachments/assets/ea30b7e3-0664-4a5b-bb13-4c18cdae2a31)
**arm64**
![nushell-docker-arm64](https://github.com/user-attachments/assets/54e47051-1ee7-4695-bc6c-1e211532a545)
-rw-r--r-- | docker/Dockerfile | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile index 0ccfc4574..bf45834b1 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -7,13 +7,25 @@ FROM alpine LABEL maintainer=nushell -RUN echo '/usr/bin/nu' >> /etc/shells \ +ARG TARGETARCH + +RUN set -eux; \ + if [ "${TARGETARCH}" = "amd64" ] || [ "${TARGETARCH}" = "x86_64" ]; then \ + echo "Downloading x86_64 binary for ${TARGETARCH}..."; \ + arch_path="x86_64"; \ + elif [ "${TARGETARCH}" = "arm64" ] || [ "${TARGETARCH}" = "aarch64"]; then \ + echo "Downloading aarch64 binary for ${TARGETARCH}..."; \ + arch_path="aarch64"; \ + else \ + arch_path=""; \ + fi; \ + echo '/usr/bin/nu' >> /etc/shells \ && adduser -D -s /usr/bin/nu nushell \ && mkdir -p /home/nushell/.config/nushell/ \ && cd /tmp \ && wget -qO - https://api.github.com/repos/nushell/nushell/releases/latest \ | grep browser_download_url \ - | grep musl.tar.gz \ + | grep "${arch_path}.*.musl.tar.gz" \ | cut -f4 -d '"' \ | xargs -I{} wget {} \ && tar -xzf nu* \ |