#!/usr/bin/env bash container_name="centos_repo" # Path to folder with cloned offline-installer build directory with docker_entrypoint script volume_offline_directory="$(readlink -f $(dirname ${0}))" # Path for directory where repository will be created volume_repo_directory="$(pwd)" # Path inside container with cloned offline-installer build directory container_offline_volume="/mnt/offline/" # Path inside container where will be created repository container_repo_volume="/mnt/repo/" # Docker image name and version docker_image="centos:centos7.6.1810" # Expected directory for RPM packages expected_dir="resources/pkg/rhel" help () { echo "Script for run docker container with RPM repository" echo "usage: create_repo.sh [-d|--destination-repository output directory] [-c|--cloned-directory input directory]" echo "-h --help: Show this help" echo "-d --destination-repository: set path where will be stored RPM packages. Default value is current directory" echo "-c --cloned-directory: set path where is stored this script and docker-entrypoint script (offline-installer/build directory). Fill it just when you want to use different script/datalists" echo "If build folder from offline repository is not specified will be used default path of current folder." } # Getting input parametters POSITIONAL=() if [[ $# -eq 0 ]] ; then help # show help exit 0 fi while [[ $# -gt 0 ]] do case "$1" in -h|--help) # Help parametter help # show help exit 0 ;; -c|--cloned-directory) # Directory parametter # Sets path where is cloned offline-installer build directory volume_offline_directory="$2" ;; -d|--destination-repository) # Repository direcotry parametter # Sets path where will be repository created volume_repo_directory="$2" ;; *) # unknown option help # show help exit 1 ;; esac shift;shift done # Check if path contains expected path "resources/pkg/rhel" if ! [[ "/$volume_repo_directory/" = *"/$expected_dir/"* ]]; then # Create repo folder if it not exists volume_repo_directory="$volume_repo_directory"/resources/pkg/rhel [ ! -d "$volume_repo_directory" ] && mkdir -p $volume_repo_directory fi #Check if container "centos-repo" is running if [ ! "$(docker ps -q -f name=$container_name)" ]; then if [ "$(docker ps -aq -f status=exited -f name=$container_name)" ]; then # cleanup docker rm $container_name fi # run repo container # name of container $container_name # docker entrypoint script from mounted volume # docker run -d \ --name $container_name \ -v ${volume_offline_directory}:${container_offline_volume} \ -v ${volume_repo_directory}:${container_repo_volume} \ --rm \ --entrypoint="${container_offline_volume}docker-entrypoint.sh" \ -it ${docker_image} \ --directory ${container_repo_volume} \ --list ${container_offline_volume}data_lists/ docker logs $(docker ps --filter "name=centos_repo" --format '{{.ID}}' -a) -f fi