diff --git a/docker/Dockerfile.alpine b/docker/Dockerfile.alpine index 50f50da..1aee122 100644 --- a/docker/Dockerfile.alpine +++ b/docker/Dockerfile.alpine @@ -3,22 +3,26 @@ FROM alpine:3.18 AS base ARG TARGETARCH ARG BUILDPLATFORM -# 安装构建依赖(depends 系统所需工具) +# 安装构建依赖(静态库版本) RUN apk add --no-cache \ git \ wget \ - curl \ build-base \ cmake \ - pkgconfig \ - autoconf \ - automake \ - libtool \ - bzip2 \ - xz \ - python3 \ - gperf \ - linux-headers + boost-static \ + openssl-libs-static \ + zeromq-static \ + libsodium-static \ + libunwind-static \ + xz-dev \ + readline-static \ + expat-static \ + hidapi-static \ + libusb-static \ + protobuf-dev \ + eudev-dev \ + linux-headers \ + pkgconfig FROM base AS build @@ -40,21 +44,26 @@ COPY ./init.sh ./init.sh RUN chmod +x ./init.sh && sed -i 's|/bin/sh|/bin/ash|' ./init.sh && ./init.sh -# 使用官方 depends 系统构建静态依赖(参考 .source/Dockerfile) +# 构建 Monero (mond) - 使用静态链接 RUN if [ "$BUILDPLATFORM" != "$TARGETPLATFORM" ]; then \ - MAKE_JOBS=2; \ + MAKE_JOBS="-j2"; \ else \ - MAKE_JOBS=$(nproc); \ + MAKE_JOBS="-j$(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 && \ + 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 build/$DEPENDS_TARGET/release/bin/mond /output/mond + cp bin/mond /output/mond # 最终阶段 - 只复制静态链接的二进制文件 FROM scratch