#!/usr/bin/env bash # Exit on error set -e # Directory constants repo_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." >/dev/null 2>&1 && pwd )" exec_dir="$( pwd )" script_dir="$repo_dir/scripts/" docker_compose_file="$repo_dir/scripts/docker-compose.yml" help_text=" Helper script to install oracle drivers on local linux machine from Oracle database container. oracledb-install-driver-libs.sh COMMAND COMMAND: run: Do the driver install. dry-run: Do the driver install but do not save any files. help: Print this menu. NOTES FOR USAGE: 1. This script is tested to work on Ubuntu 18.04 LTS. 2. This script requires you to have sudo capabilities so to use ldconfig. " # Main script logic cmd="$1" function main () { case "$1" in "run") printf "Starting run ...\n" do_install true exit 0 ;; "dry-run") printf "Starting dry-run ...\n" do_install false exit 0 ;; "help"|"--help"|"-h"|"") printf "$help_text" exit 0 ;; *) printf "Unsupported command: $cmd\n" printf "Try running with 'help' to see supported commands.\n" exit 1 ;; esac } function do_install () { do_changes="$1" printf "\nEnsuring oracle containers from docker-compose are up ...\n" docker-compose -f "$docker_compose_file" up --build -d oracledb docker-compose -f "$docker_compose_file" up waitoracledb printf "\nSleeping an extra 15 seconds to ensure oracle has fully started ...\n" sleep 15 printf "\nInstalling oracle client libs to db container ...\n" set -x docker-compose -f "$docker_compose_file" exec -T oracledb curl http://yum.oracle.com/public-yum-ol7.repo -o /etc/yum.repos.d/public-yum-ol7.repo docker-compose -f "$docker_compose_file" exec -T oracledb yum install -y yum-utils docker-compose -f "$docker_compose_file" exec -T oracledb yum-config-manager --enable ol7_oracle_instantclient docker-compose -f "$docker_compose_file" exec -T oracledb yum install -y oracle-instantclient18.3-basiclite set +x printf "\nCopying to host's ~/lib directory and adding to ldconfig ...\n" if [ "$do_changes" = "true" ]; then set -x docker cp oracledb_container:/usr/lib/oracle/18.3/client64/lib/ ~/ sudo sh -c "echo $HOME/lib > /etc/ld.so.conf.d/oracle-instantclient.conf" sudo ldconfig set +x else printf "(skipping because dry-run)\n" fi } # Start the bash app's main function main "$cmd"