cd "${0%/*}" || (echo "Could not chdir to this script's dir!" && exit) # Change the working directory to the script's directory, when running from other location. justInstall=0 shouldRunInDocker=0 if [[ $# -eq 1 ]]; then justInstall=$1 elif [[ $# -eq 2 ]]; then justInstall=$1 shouldRunInDocker=$2 elif [[ $# -gt 2 ]]; then echo -e "Wrong number of arguments given: ${#}\nPlease execute it like: script.sh "; exit 1 fi if [[ justInstall -eq 1 && shouldRunInDocker -eq 1 ]]; then echo -e "Cannot run in docker without re-building the project (just to be safe). Setting \"justInstall\" to < 0 >" justInstall=0 fi gradleVersion="7.4" if [[ justInstall -eq 0 ]]; then if [[ ! -d /opt/gradle/gradle-${gradleVersion} ]]; then wget https://services.gradle.org/distributions/gradle-${gradleVersion}-bin.zip echo -e "\nAsking for sudo, in order to install 'gradle'..\n" sudo mkdir /opt/gradle sudo apt install -y unzip && sudo unzip -d /opt/gradle gradle-${gradleVersion}-bin.zip #ls /opt/gradle/gradle-${gradleVersion} # For debugging installation fi export PATH=/opt/gradle/gradle-${gradleVersion}/bin:$PATH gradle wrapper --gradle-version=${gradleVersion} --distribution-type=bin #gradle tasks # For debugging installation #gradle -v # For debugging installation gradle clean build if [[ shouldRunInDocker -eq 1 ]]; then echo "Give the username for the Docker Hub:" read -r username echo -e "\nBuilding docker image..\n" sudo docker --version || (echo -e "Docker was not found!"; exit 9) dockerImage=${username}"/urls_controller:latest" sudo docker build -t "${dockerImage}" . echo -e "\nPushing docker image.. (the account password is required)..\n" (sudo docker login -u "${username}" && sudo docker push "${dockerImage}") || true (sudo mkdir -p "$HOME"/tmp/config && sudo cp ./src/main/resources/application.properties "$HOME"/tmp/config) || true # This also replaces an existing "application.properties". sudo docker run -d --mount type=bind,source="$HOME"/tmp/config,target=/mnt/config -p 1880:1880 "${dockerImage}" && echo "The docker container started running." # Run in "detached mode" (in the background). fi else export PATH=/opt/gradle/gradle-${gradleVersion}/bin:$PATH # Make sure the gradle is still accessible (it usually isn't without the "export"). fi if [[ shouldRunInDocker -ne 1 ]]; then gradle bootRun fi