55 lines
2.0 KiB
Docker
55 lines
2.0 KiB
Docker
# syntax=docker/dockerfile:1.6
|
|
FROM --platform=$TARGETPLATFORM ubuntu:24.04
|
|
|
|
ARG TARGETARCH
|
|
ARG SUI_REF=mainnet-v1.53.2
|
|
|
|
# minimal tools + jq + age (optional lock/unlock helpers)
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends ca-certificates curl jq tar age && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Fetch the right prebuilt tarball for this arch and install 'sui'
|
|
RUN set -eux; \
|
|
case "$TARGETARCH" in \
|
|
amd64) want='(x86_64|amd64)' ;; \
|
|
arm64) want='(aarch64|arm64)' ;; \
|
|
*) echo "unsupported arch: $TARGETARCH" >&2; exit 1 ;; \
|
|
esac; \
|
|
api="https://api.github.com/repos/MystenLabs/sui/releases/tags/${SUI_REF}"; \
|
|
url="$(curl -fsSL --http1.1 --retry 5 --retry-connrefused --retry-delay 2 "$api" \
|
|
| jq -r --arg want "$want" '.assets[] | select(.name|test("ubuntu.*" + $want)) | .browser_download_url' \
|
|
| head -n1)"; \
|
|
test -n "$url"; \
|
|
echo "Downloading: $url"; \
|
|
curl -fL --http1.1 --retry 5 --retry-connrefused --retry-delay 2 -o /tmp/sui.tgz "$url"; \
|
|
mkdir -p /opt/sui; \
|
|
tar -xzf /tmp/sui.tgz -C /opt/sui; \
|
|
# find and install the 'sui' binary from the extracted tree
|
|
f="$(find /opt/sui -type f -name sui -perm -u+x | head -n1)"; \
|
|
test -n "$f"; install -m 0755 "$f" /usr/local/bin/sui; \
|
|
# sanity check in the image
|
|
/usr/local/bin/sui --version
|
|
|
|
# runtime user and homedir setup
|
|
RUN set -eux; \
|
|
uid=1000; gid=1000; \
|
|
gname="$(getent group "$gid" | cut -d: -f1 || true)"; \
|
|
if [ -z "$gname" ]; then \
|
|
groupadd -g "$gid" sui; \
|
|
gname=sui; \
|
|
fi; \
|
|
if getent passwd "$uid" >/dev/null; then \
|
|
# UID 1000 already exists; create 'sui' with next available UID but keep primary group = gid 1000
|
|
useradd -m -g "$gid" sui; \
|
|
else \
|
|
useradd -m -u "$uid" -g "$gid" sui; \
|
|
fi; \
|
|
install -d -m 0770 -o sui -g "$gid" /home/sui/.sui/sui_config
|
|
|
|
USER sui
|
|
WORKDIR /home/sui
|
|
|
|
# keep the container ready to be exec'd into by your scripts
|
|
CMD ["/bin/sh","-lc","sleep infinity"]
|