#!/usr/bin/env bash # Usage: # ./run_dockers.bsh - Run all the docker images # ./run_dockers.bsh lfs_centos_5 lfs_centos_7 - Run only CentOS 5 & 7 image set -eu CUR_DIR=$(cd $(dirname "${BASH_SOURCE[0]}"); pwd) REPO_DIR=$(cd ${CUR_DIR}/..; pwd) PACKAGE_DIR=${CUR_DIR}/repos BUILD_LOCAL=1 #If you are not in docker group and you have sudo, default value is sudo : ${SUDO=`if id -nG | grep -qwv docker && which sudo > /dev/null 2>&1; then echo sudo; fi`} function split_image_name() { #$1 - image directory name or dockerfile #sets IMAGE_NAME to the basename of the dir containing the docker file #sets IMAGE_INFO to be the array name following my pattern IMAGE_NAME=$(basename $1) if [ "${IMAGE_NAME,,}" == "dockerfile" ]; then IMAGE_NAME=$(basename $(dirname $1)) fi local IFS=_ IMAGE_INFO=(${IMAGE_NAME}) } IMAGES=() while [[ $# > 0 ]]; do if [ "$1" == "--" ]; then shift DOCKER_CMD="${@}" break else IMAGES+=("$1") fi shift done if [[ ${#IMAGES} == 0 ]]; then IMAGES=($(ls -d ${CUR_DIR}/git-lfs_*/Dockerfile)) fi mkdir -p "${PACKAGE_DIR}" #Run docker to build pacakges for DOCKER_FILE in "${IMAGES[@]}"; do split_image_name "${DOCKER_FILE}" #set IMAGE_NAME and IMAGE_INFO echo Compiling LFS in docker image ${IMAGE_NAME} IMAGE_REPO_DIR="${PACKAGE_DIR}"/"${IMAGE_INFO[1]}"/"${IMAGE_INFO[2]}" $SUDO docker run --rm ${DOCKER_CMD+-it} \ -e BUILD_LOCAL=${BUILD_LOCAL} \ -v ${REPO_DIR}:/src \ -v ${IMAGE_REPO_DIR}:/repo \ --name git-lfs_build_container \ ${IMAGE_NAME} ${DOCKER_CMD-} #mkdir -p "${IMAGE_REPO_DIR}" #$SUDO docker cp git-lfs_build_container:/tmp/docker_run/repo/ ${IMAGE_REPO_DIR} # $SUDO docker kill git-lfs_build_container # $SUDO docker rm git-lfs_build_container done