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