Some checks failed
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 55s
Build and Release Mond / build-and-test (arm64, alpine) (push) Failing after 2m16s
Build and Release Mond / build-and-test (amd64, alpine) (push) Failing after 9m9s
Build and Release Mond / release (push) Has been skipped
问题修复: - Alpine 之前使用简单 cmake 方法导致动态链接(依赖 libzmq.so, libsodium.so, libunbound.so) - 运行时错误:Error loading shared library 解决方案: 1. 移除所有动态库开发包(boost-*, zeromq-dev, unbound-dev 等) 2. 只保留 depends 系统所需的构建工具 3. 使用官方 depends 系统:make depends target=$DEPENDS_TARGET 4. 与 Ubuntu 构建流程完全统一
65 lines
1.5 KiB
Docker
65 lines
1.5 KiB
Docker
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
|
||
|
||
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 系统构建静态依赖(参考 .source/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
|