From 03f8118f7a233a92f0183ab3cb5d1156b9a18a0e Mon Sep 17 00:00:00 2001 From: Wang Defa Date: Mon, 15 Dec 2025 14:40:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Alpine=20=E6=94=B9=E7=94=A8=20depends=20?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=AE=9E=E7=8E=B0=E7=BA=AF=E9=9D=99=E6=80=81?= =?UTF-8?q?=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 放弃使用系统包(zeromq-dev 等只提供动态库) - 改用官方 depends 系统从源代码构建所有依赖 - 添加 libexecinfo-dev 解决 musl 环境 execinfo.h 问题 - 与 Ubuntu 构建方式统一,确保纯静态链接 --- docker/Dockerfile.alpine | 57 ++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/docker/Dockerfile.alpine b/docker/Dockerfile.alpine index 24a37af..e44c9be 100644 --- a/docker/Dockerfile.alpine +++ b/docker/Dockerfile.alpine @@ -3,29 +3,23 @@ FROM alpine:3.18 AS base ARG TARGETARCH ARG BUILDPLATFORM -# 安装构建依赖(包含静态库的 -dev 包) +# 安装 depends 系统和 Monero 构建所需的依赖 RUN apk add --no-cache \ git \ wget \ + curl \ build-base \ cmake \ - boost-dev \ - boost-static \ - openssl-libs-static \ - openssl-dev \ - zeromq-dev \ - unbound-dev \ - libsodium-static \ - libunwind-static \ - xz-dev \ - readline-static \ - expat-dev \ - hidapi-dev \ - libusb-dev \ - protobuf-dev \ - eudev-dev \ - linux-headers \ - pkgconfig + pkg-config \ + autoconf \ + automake \ + libtool \ + bzip2 \ + xz \ + python3 \ + gperf \ + libexecinfo-dev \ + linux-headers FROM base AS build @@ -47,26 +41,21 @@ COPY ./init.sh ./init.sh RUN chmod +x ./init.sh && sed -i 's|/bin/sh|/bin/ash|' ./init.sh && ./init.sh -# 构建 Monero (mond) - 使用静态链接 +# 使用官方 depends 系统构建静态依赖(参考 Ubuntu Dockerfile) RUN if [ "$BUILDPLATFORM" != "$TARGETPLATFORM" ]; then \ - MAKE_JOBS="-j2"; \ + MAKE_JOBS=2; \ else \ - MAKE_JOBS="-j$(nproc)"; \ + MAKE_JOBS=$(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 && \ + 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 bin/mond /output/mond + cp build/$DEPENDS_TARGET/release/bin/mond /output/mond # 最终阶段 - 只复制静态链接的二进制文件 FROM scratch