Files
duplicati/pipeline/docker-run/docker-run
T
verhoek 063c812e5e Version bump test + sanity check
Forgot a version bump and added sanity check of source/target dirs.
2019-12-03 21:15:25 +01:00

97 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
. "$( cd "$(dirname "$0")" ; pwd -P )/error_handling.sh"
. "$( cd "$(dirname "$0")" ; pwd -P )/markers.sh"
function pull_docker_image () {
travis_mark_begin "PULL MINIMAL DOCKER IMAGE"
docker pull $DOCKER_IMAGE
travis_mark_end "PULL MINIMAL DOCKER IMAGE"
}
function add_option () {
FORWARD_OPTS[${#FORWARD_OPTS[@]}]="$1"
FORWARD_OPTS[${#FORWARD_OPTS[@]}]="$2"
}
function add_volumes () {
volume_args=()
volume_args[${#volume_args[@]}]="-v /var/run/docker.sock:/var/run/docker.sock \
-v ${TARGET_DIR}:/application \
${DOCKER_VOLUME} \
-v $( cd "$(dirname "$0")" ; pwd -P )/../:/pipeline ${DOCKER_SHARED_MEM}"
for (( i=1; i<${#SOURCE_DIR[@]}+1; i++ )); do
volume_args[${#volume_args[@]}]="-v ${SOURCE_DIR[$i-1]}:/source_$i"
done
}
function run_with_docker () {
if [ -z ${TARGET_DIR} ]; then
echo "no target cache specified"
exit 1
fi
add_volumes
docker run ${volume_args[@]} \
--privileged $DOCKER_AS_ROOT --rm $DOCKER_IMAGE "/pipeline/docker-run/runner.sh" "${FORWARD_OPTS[@]}"
}
function parse_options () {
FORWARD_OPTS=()
SOURCE_DIR=()
while true ; do
case "$1" in
--image)
DOCKER_IMAGE="$2"
;;
--sourcedir)
SOURCE_DIR[${#SOURCE_DIR[@]}]="$2"
;;
--targetdir)
TARGET_DIR="$2"
;;
--asroot)
DOCKER_AS_ROOT="-u 0"
;;
--volume)
DOCKER_VOLUME="-v $2"
;;
--sharedmem)
DOCKER_SHARED_MEM="-v /dev/shm:/dev/shm"
;;
--*)
if [[ $2 =~ ^--.* || -z $2 ]]; then
FORWARD_OPTS[${#FORWARD_OPTS[@]}]="$1"
else
FORWARD_OPTS[${#FORWARD_OPTS[@]}]="$1"
FORWARD_OPTS[${#FORWARD_OPTS[@]}]="$2"
fi
;;
esac
if [[ -z $1 ]]; then
break
elif [[ $2 =~ ^--.* || -z $2 ]]; then
shift
else
shift
shift
fi
done
if [ "${TARGET_DIR##${SOURCE_DIR}}" != "${TARGET_DIR}" ]; then
echo "targetdir $TARGET_DIR is not allowed to be a subdir of sourcedir $SOURCE_DIR"
fi
add_option "--workingdir" "$TARGET_DIR"
add_option "--sourcedirnum" ${#SOURCE_DIR[@]}
}
parse_options "$@"
pull_docker_image
run_with_docker