54 lines
1.5 KiB
Bash
Executable file
54 lines
1.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -xe
|
|
|
|
SOURCE=$1
|
|
TAG=$(echo $2 | sed 's/\//-/g')
|
|
NAME=$3
|
|
|
|
require_input() {
|
|
input=$1
|
|
name=$2
|
|
|
|
if [ "$input" == "" ]; then
|
|
echo "Input, $name, required but not present"
|
|
exit 1;
|
|
fi
|
|
}
|
|
|
|
require_input "$SOURCE" "Dockerfile"
|
|
require_input "$TAG" "image tag"
|
|
require_input "$NAME" "image name"
|
|
|
|
ARCHITECTURES=('arm64v8')
|
|
|
|
for architecture in "${ARCHITECTURES[@]}"; do
|
|
cp "$SOURCE" "$SOURCE-$architecture"
|
|
if [ "$architecture" == arm32v7 ]; then
|
|
sed -i'' 's/:amd64/:arm32v7/g' "$SOURCE-$architecture" # source image
|
|
sed -i'' 's/FROM amd64/FROM arm32v7/g' "$SOURCE-$architecture" # source image
|
|
sed -i'' 's/x64/armv7l/g' "$SOURCE-$architecture" # for node
|
|
sed -i'' 's/amd64/armhf/g' "$SOURCE-$architecture" # for tini
|
|
fi
|
|
|
|
if [ "$architecture" == arm64v8 ]; then
|
|
sed -i'' 's/:latest-amd64/:latest-arm64v8/g' "$SOURCE-$architecture" # source image
|
|
sed -i'' 's/FROM amd64/FROM arm64v8/g' "$SOURCE-$architecture" # source image
|
|
sed -i'' 's/x64/arm64/g' "$SOURCE-$architecture" # for node
|
|
sed -i'' 's/amd64/arm64/g' "$SOURCE-$architecture" # for tini
|
|
fi
|
|
|
|
docker build \
|
|
--pull \
|
|
--no-cache \
|
|
-f "$SOURCE-$architecture" \
|
|
-t "$NAME:$TAG-$architecture" \
|
|
-t "$NAME:latest-$architecture" \
|
|
.
|
|
|
|
docker push "$NAME:$TAG-$architecture"
|
|
docker push "$NAME:latest-$architecture"
|
|
|
|
rm "$SOURCE-$architecture"
|
|
done
|