FROM alpine:3.18 AS base ARG TARGETARCH ARG BUILDPLATFORM # 安装 depends 系统和 Monero 构建所需的依赖 RUN apk add --no-cache \ git \ wget \ curl \ build-base \ cmake \ pkg-config \ autoconf \ automake \ libtool \ bzip2 \ xz \ python3 \ gperf \ libexecinfo-dev \ linux-headers 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 # 使用官方 depends 系统构建静态依赖(参考 Ubuntu Dockerfile) RUN if [ "$BUILDPLATFORM" != "$TARGETPLATFORM" ]; then \ MAKE_JOBS=2; \ else \ MAKE_JOBS=$(nproc); \ fi && \ if [ "$TARGETARCH" = "arm64" ]; then \ DEPENDS_TARGET="aarch64-linux-gnu"; \ else \ DEPENDS_TARGET="x86_64-linux-gnu"; \ fi && \ echo "Building dependencies for $DEPENDS_TARGET with $MAKE_JOBS parallel jobs" && \ make -j$MAKE_JOBS depends target=$DEPENDS_TARGET && \ mkdir -p /output && \ cp build/$DEPENDS_TARGET/release/bin/mond /output/mond # 最终阶段 - 只复制静态链接的二进制文件 FROM scratch ARG TARGETARCH COPY --from=build /output/mond /linux_${TARGETARCH}/mond