FROM alpine:3.18 AS base ARG TARGETARCH ARG BUILDPLATFORM # 安装构建依赖(包含静态库的 -dev 包) RUN apk add --no-cache \ git \ wget \ build-base \ cmake \ boost-static \ openssl-libs-static \ openssl-dev \ zeromq-dev \ libsodium-static \ libunwind-static \ xz-dev \ readline-static \ expat-dev \ hidapi-dev \ libusb-dev \ protobuf-dev \ eudev-dev \ linux-headers \ pkgconfig FROM base AS build ARG MONERO_VERSION=v0.18.3.4 ARG TARGETARCH ARG BUILDPLATFORM ARG TARGETPLATFORM # 克隆 Monero 项目 RUN git clone --recursive https://github.com/monero-project/monero.git && \ cd monero && \ git checkout ${MONERO_VERSION} && \ git submodule update --init --force WORKDIR /monero # 复制并运行 init.sh 脚本进行修改 COPY ./init.sh ./init.sh RUN chmod +x ./init.sh && sed -i 's|/bin/sh|/bin/ash|' ./init.sh && ./init.sh # 构建 Monero (mond) - 使用静态链接 RUN if [ "$BUILDPLATFORM" != "$TARGETPLATFORM" ]; then \ MAKE_JOBS="-j2"; \ else \ MAKE_JOBS="-j$(nproc)"; \ fi && \ echo "Building mond with parallel jobs: $MAKE_JOBS" && \ mkdir -p build/release && cd build/release && \ cmake ../.. \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_GUI_DEPS=OFF \ -DARCH=default \ -DSTATIC=ON \ -DSTACK_TRACE=OFF \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_FIND_LIBRARY_SUFFIXES=".a" \ -DCMAKE_EXE_LINKER_FLAGS="-static -static-libgcc -static-libstdc++" && \ make $MAKE_JOBS daemon && \ mkdir -p /output && \ cp bin/mond /output/mond # 最终阶段 - 只复制静态链接的二进制文件 FROM scratch ARG TARGETARCH COPY --from=build /output/mond /linux_${TARGETARCH}/mond