modify: aarch64 设备docker部署

This commit is contained in:
root
2026-04-30 16:26:50 +08:00
parent 072a59a169
commit 074414aeab
6 changed files with 114 additions and 36 deletions
+56 -29
View File
@@ -1,48 +1,75 @@
# FROM debian:bookworm-slim AS builder
# 架构参数:可选值 x86_64 或 aarch64
ARG TARGETARCH=x86_64
FROM ubuntu:24.04 AS builder
RUN apt-get update && \
apt-get install -y --no-install-recommends ca-certificates tzdata && \
ARG TARGETARCH
# 跳过 GPG 签名验证(兼容 BM1684 等系统时间不准的设备)
RUN apt-get update -o Acquire::AllowInsecureRepositories=yes \
-o Acquire::AllowDowngradeToInsecureRepositories=yes \
--allow-unauthenticated 2>/dev/null || true && \
apt-get install -y --no-install-recommends \
-o Acquire::AllowInsecureRepositories=yes \
--allow-unauthenticated \
ca-certificates tzdata 2>/dev/null || true && \
rm -rf /var/lib/apt/lists/*
COPY build/chongming /tmp/chongming
RUN mkdir -p /tmp/rootfs/app && \
# === 临时目录 ===
mkdir -p /tmp/rootfs/tmp && \
chmod 1777 /tmp/rootfs/tmp && \
# === 数据目录 ===
mkdir -p /tmp/rootfs/app/data && \
chmod 777 /tmp/rootfs/app/data && \
# === 解释器目录 ===
mkdir -p /tmp/rootfs/lib64 && \
mkdir -p /tmp/rootfs/lib/x86_64-linux-gnu && \
cp /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /tmp/rootfs/lib/x86_64-linux-gnu/ && \
ln -s /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /tmp/rootfs/lib64/ld-linux-x86-64.so.2 && \
# 构建最小 rootfs
RUN \
if [ "$TARGETARCH" = "aarch64" ]; then \
LIB_PATH="/lib/aarch64-linux-gnu"; \
LD_LINKER="/lib/ld-linux-aarch64.so.1"; \
LD_LINKER_TARGET="/tmp/rootfs/lib/ld-linux-aarch64.so.1"; \
else \
LIB_PATH="/lib/x86_64-linux-gnu"; \
LD_LINKER="/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2"; \
LD_LINKER_TARGET="/tmp/rootfs/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2"; \
fi && \
mkdir -p /tmp/rootfs/app && \
mkdir -p /tmp/rootfs/tmp && chmod 1777 /tmp/rootfs/tmp && \
mkdir -p /tmp/rootfs/app/data && chmod 777 /tmp/rootfs/app/data && \
# === aarch64 链接器路径特殊处理 ===
if [ "$TARGETARCH" = "aarch64" ]; then \
mkdir -p /tmp/rootfs/lib && \
cp /lib/ld-linux-aarch64.so.1 /tmp/rootfs/lib/ && \
mkdir -p /tmp/rootfs/lib64 && \
ln -s /lib/ld-linux-aarch64.so.1 /tmp/rootfs/lib64/ld-linux-aarch64.so.1; \
else \
mkdir -p /tmp/rootfs/lib64 && \
mkdir -p /tmp/rootfs${LIB_PATH} && \
cp ${LIB_PATH}/ld-linux-x86-64.so.2 /tmp/rootfs${LIB_PATH}/ && \
ln -s ${LIB_PATH}/ld-linux-x86-64.so.2 /tmp/rootfs/lib64/ld-linux-x86-64.so.2; \
fi && \
# === 依赖库 ===
cp /lib/x86_64-linux-gnu/libdl.so.2 /tmp/rootfs/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libz.so.1 /tmp/rootfs/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libpthread.so.0 /tmp/rootfs/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libc.so.6 /tmp/rootfs/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/librt.so.1 /tmp/rootfs/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libm.so.6 /tmp/rootfs/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libutil.so.1 /tmp/rootfs/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libnss_dns.so.2 /tmp/rootfs/lib/x86_64-linux-gnu/ 2>/dev/null || true && \
cp /lib/x86_64-linux-gnu/libnss_files.so.2 /tmp/rootfs/lib/x86_64-linux-gnu/ 2>/dev/null || true && \
cp /lib/x86_64-linux-gnu/libresolv.so.2 /tmp/rootfs/lib/x86_64-linux-gnu/ 2>/dev/null || true && \
mkdir -p /tmp/rootfs${LIB_PATH} && \
cp ${LIB_PATH}/libdl.so.2 /tmp/rootfs${LIB_PATH}/ && \
cp ${LIB_PATH}/libz.so.1 /tmp/rootfs${LIB_PATH}/ && \
cp ${LIB_PATH}/libpthread.so.0 /tmp/rootfs${LIB_PATH}/ && \
cp ${LIB_PATH}/libc.so.6 /tmp/rootfs${LIB_PATH}/ && \
cp ${LIB_PATH}/librt.so.1 /tmp/rootfs${LIB_PATH}/ && \
cp ${LIB_PATH}/libm.so.6 /tmp/rootfs${LIB_PATH}/ && \
cp ${LIB_PATH}/libutil.so.1 /tmp/rootfs${LIB_PATH}/ && \
cp ${LIB_PATH}/libnss_dns.so.2 /tmp/rootfs${LIB_PATH}/ 2>/dev/null || true && \
cp ${LIB_PATH}/libnss_files.so.2 /tmp/rootfs${LIB_PATH}/ 2>/dev/null || true && \
cp ${LIB_PATH}/libresolv.so.2 /tmp/rootfs${LIB_PATH}/ 2>/dev/null || true && \
# === 时区数据 ===
mkdir -p /tmp/rootfs/usr/share/zoneinfo && \
cp -r /usr/share/zoneinfo/Asia /tmp/rootfs/usr/share/zoneinfo/ && \
cp /usr/share/zoneinfo/UTC /tmp/rootfs/usr/share/zoneinfo/ && \
cp -r /usr/share/zoneinfo/Asia /tmp/rootfs/usr/share/zoneinfo/ 2>/dev/null || true && \
cp /usr/share/zoneinfo/UTC /tmp/rootfs/usr/share/zoneinfo/ 2>/dev/null || true && \
# === 证书和 DNS ===
mkdir -p /tmp/rootfs/etc/ssl/certs && \
cp /etc/ssl/certs/ca-certificates.crt /tmp/rootfs/etc/ssl/certs/ && \
cp /etc/ssl/certs/ca-certificates.crt /tmp/rootfs/etc/ssl/certs/ 2>/dev/null || true && \
echo "hosts: files dns" > /tmp/rootfs/etc/nsswitch.conf && \
# === /proc /sys /dev ===
mkdir -p /tmp/rootfs/proc /tmp/rootfs/sys /tmp/rootfs/dev
FROM scratch
ARG TARGETARCH
COPY --from=builder /tmp/rootfs/ /
COPY build/chongming /app/chongming
@@ -55,4 +82,4 @@ WORKDIR /app
EXPOSE 8000
CMD ["./chongming"]
CMD ["./chongming"]