add multi arch
This commit is contained in:
parent
f560c27192
commit
0e854487ee
@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
echo "Usage: $0 <image-name>"
|
echo "Usage: $0 <image-name>"
|
||||||
echo "Example: $0 base-debian"
|
echo "Example: $0 base-debian"
|
||||||
@ -9,9 +11,16 @@ fi
|
|||||||
IMAGE_NAME=${1:-base-debian}
|
IMAGE_NAME=${1:-base-debian}
|
||||||
echo "Building Docker image: $IMAGE_NAME"
|
echo "Building Docker image: $IMAGE_NAME"
|
||||||
|
|
||||||
|
if ! command -v dpkg &> /dev/null; then
|
||||||
|
echo "❌ Error: dpkg not found. This script only works on Debian-based systems."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ARCH=$(dpkg --print-architecture) # Outputs amd64, arm64, armhf, etc.
|
||||||
|
echo "🛠 Detected architecture: $ARCH"
|
||||||
|
|
||||||
REPO="registry.tomastm.com"
|
REPO="registry.tomastm.com"
|
||||||
TAG_LATEST="latest"
|
TAG_LATEST="latest"
|
||||||
|
|
||||||
BUILD_DIR="./${IMAGE_NAME}"
|
BUILD_DIR="./${IMAGE_NAME}"
|
||||||
|
|
||||||
if [ ! -d "${BUILD_DIR}" ]; then
|
if [ ! -d "${BUILD_DIR}" ]; then
|
||||||
@ -19,35 +28,40 @@ if [ ! -d "${BUILD_DIR}" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
UID=$(id -u)
|
_UID=$(id -u)
|
||||||
GID=$(id -g)
|
_GID=$(id -g)
|
||||||
|
|
||||||
COMMIT_ID=$(git rev-parse --short HEAD)
|
COMMIT_ID=$(git rev-parse --short HEAD)
|
||||||
|
|
||||||
IMAGE_LATEST="${REPO}/${IMAGE_NAME}:${TAG_LATEST}"
|
IMAGE_ARCH="${REPO}/${IMAGE_NAME}:${COMMIT_ID}-${ARCH}"
|
||||||
IMAGE_COMMIT="${REPO}/${IMAGE_NAME}:${COMMIT_ID}"
|
IMAGE_LATEST="${REPO}/${IMAGE_NAME}:${TAG_LATEST}-${ARCH}"
|
||||||
|
|
||||||
docker build \
|
docker build \
|
||||||
-t ${IMAGE_COMMIT} \
|
-t ${IMAGE_ARCH} \
|
||||||
--build-arg UID=${UID} \
|
--build-arg UID=${_UID} \
|
||||||
--build-arg GID=${GID} \
|
--build-arg GID=${_GID} \
|
||||||
${BUILD_DIR}
|
${BUILD_DIR}
|
||||||
|
|
||||||
docker tag ${IMAGE_COMMIT} ${IMAGE_LATEST}
|
docker tag ${IMAGE_ARCH} ${IMAGE_LATEST}
|
||||||
|
|
||||||
echo "✅ Successfully built and tagged:"
|
echo "✅ Successfully built and tagged:"
|
||||||
echo " 📌 ${IMAGE_COMMIT}"
|
echo " 📌 ${IMAGE_ARCH}"
|
||||||
echo " 🔄 ${IMAGE_LATEST}"
|
echo " 🔄 ${IMAGE_LATEST}"
|
||||||
|
|
||||||
read -p "🚀 Do you want to push the image to ${REPO}? (y/N): " PUSH_CONFIRM
|
read -p "🚀 Do you want to push the image to ${REPO}? (y/N): " PUSH_CONFIRM
|
||||||
if [[ "$PUSH_CONFIRM" =~ ^[Yy]$ ]]; then
|
if [[ "$PUSH_CONFIRM" =~ ^[Yy]$ ]]; then
|
||||||
echo "📤 Pushing images..."
|
echo "📤 Pushing images..."
|
||||||
docker push ${IMAGE_COMMIT}
|
docker push ${IMAGE_ARCH}
|
||||||
docker push ${IMAGE_LATEST}
|
docker push ${IMAGE_LATEST}
|
||||||
echo "✅ Successfully pushed images to ${REPO}"
|
echo "✅ Successfully pushed images to ${REPO}"
|
||||||
|
|
||||||
|
echo "ℹ️ Next step: If you have built and pushed both amd64 and arm64 versions, run the following command to create a multi-arch manifest:"
|
||||||
|
echo " docker manifest create ${REPO}/${IMAGE_NAME}:${COMMIT_ID} \\"
|
||||||
|
echo " ${REPO}/${IMAGE_NAME}:${COMMIT_ID}-amd64 \\"
|
||||||
|
echo " ${REPO}/${IMAGE_NAME}:${COMMIT_ID}-arm64"
|
||||||
|
echo " docker manifest push ${REPO}/${IMAGE_NAME}:${COMMIT_ID}"
|
||||||
else
|
else
|
||||||
echo "ℹ️ Skipping push. You can manually push later with:"
|
echo "ℹ️ Skipping push. You can manually push later with:"
|
||||||
echo " docker push ${IMAGE_COMMIT}"
|
echo " docker push ${IMAGE_ARCH}"
|
||||||
echo " docker push ${IMAGE_LATEST}"
|
echo " docker push ${IMAGE_LATEST}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user