# Pool-Stack Docker — Pool-only release (offline-friendly, no cpu-miner image target)
#
# Build context = unpacked release tarball root (compose BUILD_CONTEXT=.):
#   bin/blockdag-node, bin/nodeworker, bin/mining-pool
#   docker/no-snapshot.marker
#
# Compose: do not enable the miner profile — this Dockerfile has no miner stage.
#
# No git clone and no compile: images use the shipped binaries only.

# ----------------------------------------------------------------------------
# Node Runtime Stage
# ----------------------------------------------------------------------------
FROM ubuntu:24.04 AS node
ARG SNAPSHOT_PATH=docker/no-snapshot.marker
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
    ca-certificates tzdata \
 && rm -rf /var/lib/apt/lists/*

RUN groupadd -r bdagStack && useradd -r -g bdagStack -d /var/lib/bdagStack -m bdagStack \
 && mkdir -p /etc/bdagStack /var/lib/bdagStack/node/mainnet /var/lib/bdagStack/nodeworker /var/log/bdagStack /opt/bdagStack/bin \
 && chown -R bdagStack:bdagStack /var/lib/bdagStack /var/log/bdagStack /etc/bdagStack

COPY bin/blockdag-node /usr/local/bin/blockdag-node
COPY bin/nodeworker /usr/local/bin/nodeworker
RUN chmod +x /usr/local/bin/blockdag-node /usr/local/bin/nodeworker \
 && sha256sum /usr/local/bin/blockdag-node /usr/local/bin/nodeworker > /opt/bdagStack/bin/checksums.txt \
 && chown bdagStack:bdagStack /opt/bdagStack/bin/checksums.txt

COPY ${SNAPSHOT_PATH} /tmp/snapshot-candidate.bdsnap

RUN set -eu; \
    if [ "$(stat -c%s /tmp/snapshot-candidate.bdsnap)" -ge 1024 ]; then \
      echo "Importing local snapshot ($(stat -c%s /tmp/snapshot-candidate.bdsnap) bytes)"; \
      /usr/local/bin/blockdag-node snap import \
        --datadir /var/lib/bdagStack/node/mainnet \
        --path /tmp/snapshot-candidate.bdsnap; \
      chown -R bdagStack:bdagStack /var/lib/bdagStack/node /var/log/bdagStack; \
      echo "Snapshot import finished"; \
    else \
      echo "No snapshot file; node will sync from genesis or P2P"; \
    fi; \
    rm -f /tmp/snapshot-candidate.bdsnap

USER bdagStack
WORKDIR /var/lib/bdagStack/node
EXPOSE 8150 38131 38132 18545 18546 6060
ENTRYPOINT ["/usr/local/bin/nodeworker", \
    "--node-binary=/usr/local/bin/blockdag-node", \
    "--node-args=--configfile /etc/bdagStack/node.conf", \
    "--rpc-url=ws://127.0.0.1:18546", \
    "--dag-rpc-url=http://127.0.0.1:38131", \
    "--persist-root=/var/lib/bdagStack/nodeworker", \
    "--health-min-peers=1", \
    "--rollout-window=30m"]

# ----------------------------------------------------------------------------
# Pool Runtime Stage
# ----------------------------------------------------------------------------
FROM ubuntu:24.04 AS pool
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
    ca-certificates tzdata \
 && rm -rf /var/lib/apt/lists/*

RUN groupadd -r bdagStack && useradd -r -g bdagStack -d /var/lib/bdagStack -m bdagStack \
 && mkdir -p /etc/bdagStack /var/lib/bdagStack/pool /var/log/bdagStack \
 && chown -R bdagStack:bdagStack /var/lib/bdagStack /var/log/bdagStack /etc/bdagStack

COPY bin/mining-pool /usr/local/bin/mining-pool
RUN chmod +x /usr/local/bin/mining-pool

USER bdagStack
WORKDIR /var/lib/bdagStack/pool
EXPOSE 3334 8080
ENTRYPOINT ["/usr/local/bin/mining-pool"]

