diff options
| -rwxr-xr-x | bin/hibiki/compose | 10 | ||||
| -rwxr-xr-x | bin/hibiki/enter | 44 |
2 files changed, 54 insertions, 0 deletions
diff --git a/bin/hibiki/compose b/bin/hibiki/compose new file mode 100755 index 0000000..e4a5dbd --- /dev/null +++ b/bin/hibiki/compose @@ -0,0 +1,10 @@ +#!/bin/sh +cwd="$PWD" +container_cwd="/run/cwd/$(basename "$cwd")" +exec docker run \ + --rm -it \ + --net host \ + --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \ + --mount type=bind,src="$cwd",dst="$container_cwd" \ + -w "$container_cwd" \ + docker/compose:latest $@ 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" |