From 074a380381eae02e4776e0ce54f6f6d576679bd8 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Wed, 13 Aug 2025 21:56:00 -0500 Subject: [PATCH] added dockerfiles, starting to use custom images --- dockerfiles/Dockerfile.monero-p2pool | 28 ++++++++++++++++++ dockerfiles/Dockerfile.monero-wallet-rpc | 30 +++++++++++++++++++ dockerfiles/Dockerfile.monerod | 31 +++++++++++++++++++ services/crypto/monerod/deployment.yaml | 36 +++++------------------ services/crypto/xmr-miner/deployment.yaml | 1 + 5 files changed, 97 insertions(+), 29 deletions(-) create mode 100644 dockerfiles/Dockerfile.monero-p2pool create mode 100644 dockerfiles/Dockerfile.monero-wallet-rpc create mode 100644 dockerfiles/Dockerfile.monerod diff --git a/dockerfiles/Dockerfile.monero-p2pool b/dockerfiles/Dockerfile.monero-p2pool new file mode 100644 index 0000000..4813156 --- /dev/null +++ b/dockerfiles/Dockerfile.monero-p2pool @@ -0,0 +1,28 @@ +# syntax=docker/dockerfile:1.6 +FROM debian:bookworm-slim + +ARG P2POOL_VERSION=v4.9 +ARG TARGETARCH +ARG P2POOL_SHA256="" + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends ca-certificates curl xz-utils tar; \ + update-ca-certificates; \ + case "${TARGETARCH:-arm64}" in \ + amd64) ASUF="linux-x86_64" ;; \ + arm64) ASUF="linux-arm64" ;; \ + arm) ASUF="linux-arm" ;; \ + *) echo "Unsupported TARGETARCH=${TARGETARCH}"; exit 1 ;; \ + esac; \ + URL="https://github.com/SChernykh/p2pool/releases/download/${P2POOL_VERSION}/p2pool-${ASUF}.tar.gz"; \ + echo "Downloading $URL"; \ + curl -fL "$URL" -o /tmp/p2pool.tgz; \ + if [ -n "$P2POOL_SHA256" ]; then echo "${P2POOL_SHA256} /tmp/p2pool.tgz" | sha256sum -c -; fi; \ + tar -xzf /tmp/p2pool.tgz -C /usr/local/bin --wildcards 'p2pool*'; \ + chmod 0755 /usr/local/bin/p2pool*; \ + ln -sf /usr/local/bin/p2pool /usr/local/bin/p2pool; \ + rm -f /tmp/p2pool.tgz + +EXPOSE 3333 +CMD ["p2pool","--version"] diff --git a/dockerfiles/Dockerfile.monero-wallet-rpc b/dockerfiles/Dockerfile.monero-wallet-rpc new file mode 100644 index 0000000..f355937 --- /dev/null +++ b/dockerfiles/Dockerfile.monero-wallet-rpc @@ -0,0 +1,30 @@ +# syntax=docker/dockerfile:1.6 +FROM debian:bookworm-slim + +ARG MONERO_VERSION=v0.18.4.1 +ARG TARGETARCH +ARG MONERO_SHA256="" + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends ca-certificates curl bzip2; \ + update-ca-certificates; \ + case "${TARGETARCH:-arm64}" in \ + amd64) F="monero-linux-x64" ;; \ + arm64) F="monero-linux-armv8" ;; \ + arm) F="monero-linux-armv7" ;; \ + *) echo "Unsupported TARGETARCH=${TARGETARCH}"; exit 1 ;; \ + esac; \ + URL="https://downloads.getmonero.org/cli/${F}-${MONERO_VERSION}.tar.bz2"; \ + echo "Downloading $URL"; \ + curl -fL "$URL" -o /tmp/monero.tar.bz2; \ + if [ -n "$MONERO_SHA256" ]; then echo "${MONERO_SHA256} /tmp/monero.tar.bz2" | sha256sum -c -; fi; \ + mkdir -p /opt/monero; \ + tar -xjf /tmp/monero.tar.bz2 -C /opt/monero --strip-components=1; \ + rm -f /tmp/monero.tar.bz2; \ + mkdir -p /data + +ENV LD_LIBRARY_PATH=/opt/monero:/opt/monero/lib \ + PATH="/opt/monero:${PATH}" + +CMD ["monero-wallet-rpc","--version"] diff --git a/dockerfiles/Dockerfile.monerod b/dockerfiles/Dockerfile.monerod new file mode 100644 index 0000000..26b82d3 --- /dev/null +++ b/dockerfiles/Dockerfile.monerod @@ -0,0 +1,31 @@ +# syntax=docker/dockerfile:1.6 +FROM debian:bookworm-slim + +ARG MONERO_VERSION=v0.18.4.1 +ARG TARGETARCH +ARG MONERO_SHA256="" + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends ca-certificates curl bzip2 xz-utils; \ + update-ca-certificates; \ + case "${TARGETARCH:-arm64}" in \ + amd64) F="monero-linux-x64" ;; \ + arm64) F="monero-linux-armv8" ;; \ + arm) F="monero-linux-armv7" ;; \ + *) echo "Unsupported TARGETARCH=${TARGETARCH}"; exit 1 ;; \ + esac; \ + URL="https://downloads.getmonero.org/cli/${F}-${MONERO_VERSION}.tar.bz2"; \ + echo "Downloading $URL"; \ + curl -fL "$URL" -o /tmp/monero.tar.bz2; \ + if [ -n "$MONERO_SHA256" ]; then echo "${MONERO_SHA256} /tmp/monero.tar.bz2" | sha256sum -c -; fi; \ + mkdir -p /opt/monero; \ + tar -xjf /tmp/monero.tar.bz2 -C /opt/monero --strip-components=1; \ + rm -f /tmp/monero.tar.bz2; \ + mkdir -p /data; \ + chmod 0770 /data + +ENV LD_LIBRARY_PATH=/opt/monero:/opt/monero/lib \ + PATH="/opt/monero:${PATH}" + +CMD ["/opt/monero/monerod", "--version"] diff --git a/services/crypto/monerod/deployment.yaml b/services/crypto/monerod/deployment.yaml index 31ec957..1a0f071 100644 --- a/services/crypto/monerod/deployment.yaml +++ b/services/crypto/monerod/deployment.yaml @@ -18,37 +18,10 @@ spec: fsGroupChangePolicy: OnRootMismatch nodeSelector: node-role.kubernetes.io/worker: "true" - initContainers: - - name: fetch-monero-cli - image: debian:bookworm-slim - command: ["/bin/sh","-c"] - args: - - | - set -eux - apt-get update - apt-get install -y --no-install-recommends ca-certificates curl bzip2 - update-ca-certificates - ARCH="$(uname -m)" - case "$ARCH" in - x86_64) F="monero-linux-x64" ;; - aarch64|arm64) F="monero-linux-armv8" ;; - armv7l) F="monero-linux-armv7" ;; - *) echo "Unsupported arch: $ARCH" >&2; exit 1 ;; - esac - VER="v0.18.4.1" - URL="https://downloads.getmonero.org/cli/${F}-${VER}.tar.bz2" - echo "Downloading $URL" - cd /data - curl -fL "$URL" -o monero.tar.bz2 - tar -xjf monero.tar.bz2 --strip-components=1 - rm -f monero.tar.bz2 - volumeMounts: - - name: data - mountPath: /data containers: - name: monerod - image: debian:bookworm-slim - command: ["/data/monerod"] + image: registry.bstein.dev/infra/monerod:0.18.4.1 + command: ["/opt/monero/monerod"] args: - --data-dir=/data - --non-interactive @@ -87,6 +60,11 @@ spec: periodSeconds: 20 timeoutSeconds: 3 failureThreshold: 6 + terminationGracePeriodSeconds: 120 + lifecycle: + preStop: + exec: + command: ["sh","-lc","kill -TERM 1; for i in $(seq 1 110); do kill -0 1 2>/dev/null || exit 0; sleep 1; done; exit 0"] volumeMounts: - { name: data, mountPath: /data } - { name: tmp, mountPath: /tmp } diff --git a/services/crypto/xmr-miner/deployment.yaml b/services/crypto/xmr-miner/deployment.yaml index 7b0fa93..f3f081e 100644 --- a/services/crypto/xmr-miner/deployment.yaml +++ b/services/crypto/xmr-miner/deployment.yaml @@ -1,3 +1,4 @@ +# services/crypto/xmr-miner/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: