Fix Dockerfile for arm64 compatibility
parent
b2e414984e
commit
6825c56844
|
@ -1,5 +1,6 @@
|
||||||
ARG DISTRO
|
ARG DISTRO
|
||||||
ARG VER
|
ARG VER
|
||||||
|
ARG ARCH
|
||||||
|
|
||||||
FROM ${DISTRO}:${VER} as builder
|
FROM ${DISTRO}:${VER} as builder
|
||||||
LABEL stage=innernet-rpm
|
LABEL stage=innernet-rpm
|
||||||
|
@ -20,8 +21,12 @@ RUN source $HOME/.cargo/env && \
|
||||||
cd server && cargo rpm build && \
|
cd server && cargo rpm build && \
|
||||||
cd ../client && cargo rpm build
|
cd ../client && cargo rpm build
|
||||||
|
|
||||||
|
# Copy RPMs to a temporary directory for better compatibility
|
||||||
|
RUN mkdir -p /target/rpm && \
|
||||||
|
cp -r /workdir/target/release/rpmbuild/RPMS/${ARCH}/* /target/rpm/
|
||||||
|
|
||||||
FROM ${DISTRO}:${VER}
|
FROM ${DISTRO}:${VER}
|
||||||
LABEL stage=innernet-rpm
|
LABEL stage=innernet-rpm
|
||||||
|
|
||||||
RUN mkdir -p /target/rpm
|
RUN mkdir -p /target/rpm
|
||||||
COPY --from=builder /workdir/target/release/rpmbuild/RPMS/x86_64/innernet-*.rpm /target/rpm/
|
COPY --from=builder /target/rpm/ /target/rpm/
|
||||||
|
|
|
@ -11,6 +11,7 @@ if [ $# -lt 1 ]; then
|
||||||
echo "Usage: $0 distro version (from docker hub), e.g:"
|
echo "Usage: $0 distro version (from docker hub), e.g:"
|
||||||
echo
|
echo
|
||||||
echo "$0 fedora:33"
|
echo "$0 fedora:33"
|
||||||
|
echo "$0 almalinux:9 aarch64"
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
SPLIT_ARG=(${1//:/ })
|
SPLIT_ARG=(${1//:/ })
|
||||||
|
@ -21,16 +22,28 @@ else
|
||||||
echo "bad arg"
|
echo "bad arg"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Detect architecture, default to x86_64
|
||||||
|
ARCH=${2:-x86_64}
|
||||||
|
if [[ "$ARCH" != "x86_64" && "$ARCH" != "aarch64" ]]; then
|
||||||
|
echo "Unsupported architecture: $ARCH"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||||
cd $SCRIPT_DIR/..
|
cd $SCRIPT_DIR/..
|
||||||
|
|
||||||
cmd docker build --tag "innernet-rpm-$DISTRO$VER" --file rpm/Dockerfile --build-arg DISTRO=$DISTRO --build-arg VER=$VER .
|
cmd docker build \
|
||||||
|
--tag "innernet-rpm-$DISTRO$VER-$ARCH" \
|
||||||
|
--file rpm/Dockerfile \
|
||||||
|
--build-arg DISTRO=$DISTRO \
|
||||||
|
--build-arg VER=$VER \
|
||||||
|
--build-arg ARCH=$ARCH .
|
||||||
|
|
||||||
echo "exporting built rpm's from docker image"
|
echo "exporting built rpm's from docker image"
|
||||||
cmd docker run --rm innernet-rpm-$DISTRO$VER sh -c "tar cf - target/rpm/*" | tar xv
|
cmd docker run --rm "innernet-rpm-$DISTRO$VER-$ARCH" sh -c "tar cf - target/rpm/*" | tar xv
|
||||||
|
|
||||||
echo "cleaning up"
|
echo "cleaning up"
|
||||||
cmd docker image prune --force --filter label=stage=innernet-rpm
|
cmd docker image prune --force --filter label=stage=innernet-rpm
|
||||||
|
|
Loading…
Reference in New Issue