Files
mond/docker/Dockerfile.alpine
Wang Defa 03f8118f7a
Some checks failed
Build and Release Mond / build-and-test (arm64, alpine) (push) Failing after 23s
Build and Release Mond / build-and-test (amd64, alpine) (push) Failing after 31s
Build and Release Mond / build-and-test (arm64, ubuntu) (push) Successful in 40s
Build and Release Mond / build-and-test (amd64, ubuntu) (push) Successful in 1m2s
Build and Release Mond / release (push) Has been skipped
fix: Alpine 改用 depends 系统实现纯静态链接
- 放弃使用系统包(zeromq-dev 等只提供动态库)
- 改用官方 depends 系统从源代码构建所有依赖
- 添加 libexecinfo-dev 解决 musl 环境 execinfo.h 问题
- 与 Ubuntu 构建方式统一,确保纯静态链接
2025-12-15 14:40:17 +08:00

66 lines
1.5 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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