diff --git a/docker/Dockerfile b/docker/Dockerfile index 649c378..8b9674f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,76 +4,38 @@ ARG DEBIAN_BASE=debian:bookworm-slim FROM ${DEBIAN_BASE} AS builder ARG DOGECOIN_VERSION ARG TARGETARCH +ARG BINARY_ARCH RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential \ - libtool \ - autotools-dev \ - automake \ - pkg-config \ - bsdmainutils \ - python3 \ - libevent-dev \ - libssl-dev \ - libboost-dev \ - libboost-system-dev \ - libboost-filesystem-dev \ - libboost-program-options-dev \ - libboost-thread-dev \ - libminiupnpc-dev \ - libzmq3-dev \ + wget \ + tar \ git \ + gnupg \ ca-certificates && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* WORKDIR /tmp -RUN git clone --depth 1 --branch v${DOGECOIN_VERSION} https://github.com/dogecoin/dogecoin.git +RUN if [ "$TARGETARCH" = "amd64" ]; then \ + BINARY_ARCH="x86_64"; \ + elif [ "$TARGETARCH" = "arm64" ]; then \ + BINARY_ARCH="aarch64"; \ + else \ + echo "Unsupported architecture: $TARGETARCH" && exit 1; \ + fi && \ + wget https://github.com/dogecoin/dogecoin/releases/download/v${DOGECOIN_VERSION}/dogecoin-${DOGECOIN_VERSION}-${BINARY_ARCH}-linux-gnu.tar.gz && \ + wget https://github.com/dogecoin/dogecoin/releases/download/v${DOGECOIN_VERSION}/SHA256SUMS.asc && \ + git clone --depth 1 --shallow-submodules https://github.com/dogecoin/dogecoin && \ + gpg --import dogecoin/contrib/gitian-keys/*.pgp && \ + gpg --verify SHA256SUMS.asc && \ + tar -xzvf dogecoin-${DOGECOIN_VERSION}-${BINARY_ARCH}-linux-gnu.tar.gz --strip-components=1 -C /tmp/dogecoin -WORKDIR /tmp/dogecoin -RUN ldconfig -p | grep boost || true && \ - ldconfig -p | grep ssl || true && \ - find /usr -name libboost_filesystem.pc || true && \ - find /usr -name libssl.pc || true && \ - echo "PKG_CONFIG_PATH=/usr/lib/${TARGETARCH}-linux-gnu/pkgconfig:/usr/lib/pkgconfig" && \ - export PKG_CONFIG_PATH=/usr/lib/${TARGETARCH}-linux-gnu/pkgconfig:/usr/lib/pkgconfig && \ - pkg-config --libs --cflags libboost_filesystem || echo "pkg-config failed for filesystem, continuing..." && \ - pkg-config --libs --cflags libssl || echo "pkg-config failed for libssl, continuing..." && \ - echo "Target architecture: ${TARGETARCH}" - -RUN ./autogen.sh && \ - ./configure --without-gui --disable-wallet --disable-tests \ - LDFLAGS="-L/usr/lib -L/usr/lib/${TARGETARCH}-linux-gnu -lboost_filesystem -lboost_system -lboost_program_options -lboost_thread -lssl -lcrypto" \ - CPPFLAGS="-I/usr/include" \ - PKG_CONFIG_PATH="/usr/lib/${TARGETARCH}-linux-gnu/pkgconfig:/usr/lib/pkgconfig" && \ - make && \ - strip src/dogecoind src/dogecoin-cli src/dogecoin-tx && \ - make install DESTDIR=/opt/dogecoin && \ - find /opt/dogecoin -type f -name '*.a' -delete && \ - find /opt/dogecoin -type f -name '*.h' -delete && \ - find /opt/dogecoin -type d -name 'include' -exec rm -rf {} + && \ - rm -rf /tmp/dogecoin /tmp/* /var/cache/* /var/log/* - -FROM ${DEBIAN_BASE} +FROM debian:bookworm-slim ARG DOGECOIN_VERSION -RUN apt-get update && apt-get install -y --no-install-recommends \ - libevent-pthreads-2.1-7 \ - libssl3 \ - libboost-system1.74.0 \ - libboost-filesystem1.74.0 \ - libboost-program-options1.74.0 \ - libboost-thread1.74.0 \ - libminiupnpc17 \ - libzmq5 && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* /var/cache/* /var/log/* +COPY --from=builder /tmp/dogecoin /opt/dogecoin -COPY --from=builder /opt/dogecoin/usr/local/bin/dogecoind /usr/local/bin/ -COPY --from=builder /opt/dogecoin/usr/local/bin/dogecoin-cli /usr/local/bin/ -COPY --from=builder /opt/dogecoin/usr/local/bin/dogecoin-tx /usr/local/bin/ - -ENV PATH="$PATH:/usr/local/bin" +ENV PATH="$PATH:/opt/dogecoin/bin" VOLUME ["/app/dogecoin"] @@ -81,5 +43,5 @@ EXPOSE 22556 WORKDIR /app -CMD ["/usr/local/bin/dogecoind", "-printtoconsole", "-datadir=/app/dogecoin"] +CMD ["/opt/dogecoin/bin/dogecoind", "-printtoconsole", "-datadir=/app/dogecoin"] LABEL name="dogecoin-node" version="${DOGECOIN_VERSION}" description="Dogecoin node container based on Debian" \ No newline at end of file