diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 000000000..038075df2 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,50 @@ +# Define Ubuntu 22.04 LTS as base image +FROM ubuntu:22.04 + +# Set Sparrow version and expected PGP signature +ARG SPARROW_VERSION=1.7.0 +ARG PGP_SIG=E94618334C674B40 + +# Update all packages and install requirements +RUN apt-get update \ + && apt-get upgrade -y +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends curl \ + gpg \ + gpg-agent \ + wget \ + ca-certificates \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Switch to /tmp for verification and install +WORKDIR /tmp + +# Detect and set architecture to properly download binaries +ARG TARGETARCH +RUN case ${TARGETARCH:-amd64} in \ + "arm64") SPARROW_ARCH="aarch64";; \ + "amd64") SPARROW_ARCH="x86_64";; \ + *) echo "Dockerfile does not support this platform"; exit 1 ;; \ + esac \ + # Download Sparrow Server binaries and verification assets + && wget --quiet https://github.com/sparrowwallet/sparrow/releases/download/${SPARROW_VERSION}/sparrow-server-${SPARROW_VERSION}-${SPARROW_ARCH}.tar.gz \ + && wget --quiet https://github.com/sparrowwallet/sparrow/releases/download/${SPARROW_VERSION}/sparrow-${SPARROW_VERSION}-manifest.txt \ + && wget --quiet https://github.com/sparrowwallet/sparrow/releases/download/${SPARROW_VERSION}/sparrow-${SPARROW_VERSION}-manifest.txt.asc \ + && wget --quiet https://keybase.io/craigraw/pgp_keys.asc \ + # GPG verify, sha256sum verify, and unpack Sparrow Server binaries + && gpg --import pgp_keys.asc \ + && gpg --status-fd 1 --verify sparrow-${SPARROW_VERSION}-manifest.txt.asc \ + | grep -q "GOODSIG ${PGP_SIG}" \ + || exit 1 \ + && sha256sum --check sparrow-${SPARROW_VERSION}-manifest.txt --ignore-missing || exit 1 \ + && tar xf sparrow-server-${SPARROW_VERSION}-${SPARROW_ARCH}.tar.gz -C /opt + +# Add user and setup directories for Sparrow +RUN useradd -ms /bin/bash sparrow +USER sparrow + +# Switch to home directory +WORKDIR /home/sparrow + +# Run Sparrow in terminal mode +CMD ["/opt/Sparrow/bin/Sparrow", "-t"]