diff options
Diffstat (limited to 'bin/enter')
| -rwxr-xr-x | bin/enter | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/bin/enter b/bin/enter index 77d79e3..68db3d5 100755 --- a/bin/enter +++ b/bin/enter @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e [ -n "$DEBUG" ] && set -x @@ -11,6 +11,7 @@ become= verbose= cwd=$PWD no_tty= +read_only= usage() { printf "usage: %s OPTIONS -- [ARGS]\n" "$(basename "$0")" @@ -24,12 +25,13 @@ usage() { printf " -v (be verbose)\n" printf " -c CWD\n" printf " -T (not tty)\n" + printf " -W (readonly)\n" printf "\n" printf "Enter the container defined in Dockerfile, with \$PWD mounted at /src\n" exit 2 } -while getopts t:i:f:o:c:vBDTh o; do +while getopts t:i:f:o:c:vBDTWh o; do case $o in t) target="$OPTARG" ;; i) img="$OPTARG" ;; @@ -40,6 +42,7 @@ while getopts t:i:f:o:c:vBDTh o; do B) become=1 ;; v) verbose=1 ;; T) no_tty=1 ;; + W) read_only=1 ;; h | ?) usage ;; esac done @@ -85,6 +88,9 @@ extra_args= [ -z "$no_tty" ] \ && extra_args="${extra_args} --tty" +[ -n "$read_only" ] \ + && read_only=",ro" + ep="sh" [ -n "$1" ] && { ep="$1" @@ -93,8 +99,14 @@ ep="sh" [ -n "$verbose" ] && { set -x; } -cname=$(mktemp --dry-run enterXXXX) +if dev=$(echo "$@" | grep -Po '\/dev\/[^ ]*'); then + extra_args="${extra_args} --device=${dev}" +fi + +cname=$(mktemp --dry-run enter_XXXX) exec docker run --name "$cname" --rm -i \ + --env-file <(safe-env) \ --uts host \ + --ipc host \ --entrypoint="$ep" \ - --mount=type=bind,src="$cwd",dst=/src -w /src $extra_args "$img" $@ + --mount=type=bind,src="$cwd",dst=/src"$read_only" -w /src $extra_args "$img" $@ |