linkerd2/bin/_docker.sh

76 lines
1.4 KiB
Bash

set -eu
bindir=$( cd "${BASH_SOURCE[0]%/*}" && pwd )
. "$bindir"/_log.sh
# TODO this should be set to the canonical public docker registry; we can override this
# docker registry in, for instance, CI.
export DOCKER_REGISTRY=${DOCKER_REGISTRY:-gcr.io/linkerd-io}
# When set, causes docker's build output to be emitted to stderr.
export DOCKER_TRACE=${DOCKER_TRACE:-}
docker_repo() {
repo=$1
name=$repo
if [ -n "${DOCKER_REGISTRY:-}" ]; then
name="$DOCKER_REGISTRY/$name"
fi
echo "$name"
}
docker_build() {
repo=$(docker_repo "$1")
shift
tag=$1
shift
file=$1
shift
extra="$@"
output=/dev/null
if [ -n "$DOCKER_TRACE" ]; then
output=/dev/stderr
fi
rootdir=$( cd "$bindir"/.. && pwd )
log_debug " :; docker build $rootdir -t $repo:$tag -f $file $extra"
docker build "$rootdir" \
-t "$repo:$tag" \
-f "$file" \
$extra \
> "$output"
echo "$repo:$tag"
}
docker_pull() {
repo=$(docker_repo "$1")
tag=$2
log_debug " :; docker pull $repo:$tag"
docker pull "$repo:$tag"
}
docker_push() {
repo=$(docker_repo "$1")
tag=$2
log_debug " :; docker push $repo:$tag"
docker push "$repo:$tag"
}
docker_retag() {
repo=$(docker_repo "$1")
from=$2
to=$3
log_debug " :; docker tag $repo:$from $repo:$to"
docker tag "$repo:$from" "$repo:$to"
echo "$repo:$to"
}