====== 2021-01-25 - (non)interactive docker container ======
you can run docker container to do some non-interactive processing. eg with:
docker run --rm myalgo:4.2 --foo --bar
when you need to do it interactively, you just add ''-it'':
docker run -it --rm myalgo:4.2 --foo --bar
so far, so good. now how about [[wp>Continuous integration|CI]] scripts, that on CI server are being run in a non-interactive way, but you also want the very same scripts to be runnable interactively by developers (so that they can eg. ''^C'' it during the run)? it turns out it is fairly simple with ''tty'' command to detect if terminal is interactive or not and [[wp>bash (Unix shell)|bash]] arrays to pass parameters to ''docker'':
EXTRA_FLAGS=()
if tty -s
then
EXTRA_FLAGS+=("-it")
fi
docker run \
"${EXTRA_FLAGS[@]}" \
--rm \
myalgo:4.2 --foo --bar
as a free bonus you can now add multiple optional flags, to the same array and/or use it for all the arguments, to simplify the invocation of ''docker''.