forked from Temporalitas/ipv6-proxy-server
-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathbuild-multiarch.sh
More file actions
executable file
·65 lines (56 loc) · 1.87 KB
/
Copy pathbuild-multiarch.sh
File metadata and controls
executable file
·65 lines (56 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
set -euo pipefail
# =============================================
# Build e push multi-arch (linux/amd64 + linux/arm64)
# da imagem Docker para o Docker Hub.
#
# Requer: docker com buildx, e QEMU registrado no binfmt
# (para arm64 em host amd64):
# docker run --privileged --rm tonistiigi/binfmt --install arm64
#
# Uso:
# IMAGE_TAG=v6 ./build-multiarch.sh
# IMAGE_TAG=v6 ALSO_LATEST=1 ./build-multiarch.sh
# PUSH=0 IMAGE_TAG=dev ./build-multiarch.sh
# =============================================
IMAGE_REPO="${IMAGE_REPO:-ethie/ipv6-multiple-proxy-server}"
IMAGE_TAG="${IMAGE_TAG:-}"
PUSH="${PUSH:-1}"
ALSO_LATEST="${ALSO_LATEST:-0}"
if [[ -z "$IMAGE_TAG" ]]; then
echo "[ERRO] IMAGE_TAG não definido. Exemplo: IMAGE_TAG=v6 $0" >&2
exit 1
fi
if ! docker buildx version >/dev/null 2>&1; then
echo "[ERRO] docker buildx não está disponível." >&2
exit 1
fi
BUILDER_NAME="multiarch"
if ! docker buildx inspect "$BUILDER_NAME" >/dev/null 2>&1; then
echo ">>> Criando builder buildx: ${BUILDER_NAME}..."
docker buildx create --name "$BUILDER_NAME" --driver docker-container --bootstrap
fi
docker buildx use "$BUILDER_NAME"
TAGS=("-t" "${IMAGE_REPO}:${IMAGE_TAG}")
if [[ "$ALSO_LATEST" == "1" ]]; then
TAGS+=("-t" "${IMAGE_REPO}:latest")
fi
PLATFORM="linux/amd64,linux/arm64"
if [[ "$PUSH" == "1" ]]; then
echo ">>> Build multi-arch e push: ${IMAGE_REPO}:${IMAGE_TAG} (platforms: ${PLATFORM})"
docker buildx build \
--platform "$PLATFORM" \
"${TAGS[@]}" \
--push \
.
else
echo ">>> Build local (apenas linux/amd64, sem push)."
echo " Aviso: buildx não consegue carregar multi-arch no daemon local; buildando só amd64."
docker buildx build \
--platform "linux/amd64" \
"${TAGS[@]}" \
--load \
.
fi
echo ""
echo ">>> Concluído. Tags: ${IMAGE_REPO}:${IMAGE_TAG}$([[ "$ALSO_LATEST" == "1" ]] && echo " ${IMAGE_REPO}:latest")"