diff options
| author | Robert Günzler <r@gnzler.io> | 2020-05-19 21:56:22 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2020-05-19 21:56:22 +0200 |
| commit | 6a061366d48ab76562c7503f99144cf8e5dbf602 (patch) | |
| tree | 16496c5900b145f31e08d7e8aeb59e666d3ce818 /bin/hibiki/enter | |
| parent | 7bce1399fd663dbaa164262cc5d1634c03d8d97d (diff) | |
bin: Add enter and compose
helpers for working *in* docker containers
Diffstat (limited to 'bin/hibiki/enter')
| -rwxr-xr-x | bin/hibiki/enter | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/bin/hibiki/enter b/bin/hibiki/enter new file mode 100755 index 0000000..67a9806 --- /dev/null +++ b/bin/hibiki/enter @@ -0,0 +1,44 @@ +#!/bin/sh +set -e +[ -n "$DEBUG" ] && set -x + +target= +img="" +dockerfile="${PWD}/Dockerfile" +become= + +usage() { + printf "usage: %s OPTIONS -- [DOCKER RUN ARGS]\n" "$(basename "$0")" + printf "\n" + printf " -t TARGET\n" + printf " -i IMAGE\n" + printf " -f DOCKERFILE\n" + printf " -u (become user)\n" + printf "\n" + printf "Enter the container defined in Dockerfile, with \$PWD mounted at /src\n" + exit 2 +} + +while getopts t:i:f:uh o; do + case $o in + t) target="$OPTARG" ;; + i) img="$OPTARG" ;; + f) dockerfile="$OPTARG" ;; + u) become=1 ;; + h|?) usage ;; + esac +done +shift $((OPTIND - 1)) + +[ -z "$img" ] && img="$(basename "$(dirname "$(readlink -f -- "$dockerfile")")")" + +extra_args= +[ -n "$become" ] && extra_args="--user=$(id -u):$(id -g)" + +# allow setting this to some non-file value to skip building +# > enter -i alpine -f none +# for a quick alpine based container with $PWD mounted in +[ -f "$dockerfile" ] && \ + docker build --tag="$img" --target="$target" --file="$dockerfile" "$(dirname "$dockerfile")" + +exec docker run --rm -it --mount=type=bind,src="$PWD",dst=/src -w /src $@ $extra_args "$img" |