#!/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