#!/bin/bash #set -e script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" current_dir="$(pwd)" images_list=() sudo chown -R $(id -u):$(id -g) "$current_dir"/builder/build cd kasmweb npm install npm run build cd "$current_dir" cp -r kasmweb/dist "$current_dir"/builder/www if [ -f /etc/nv_tegra_release ]; then NETWORK_FLAG="--network=host" fi for file in "$script_dir"/dockerfile.*.build; do if [[ "$file" == *.deb.build ]] || [[ "$file" == *.apk.build ]] || [[ "$file" == *.rpm.build ]] || [[ "$file" == *www* ]]; then continue fi [ -e "$file" ] || continue filename="$(basename "$file")" image_name=$(echo "$filename" | sed -E 's/^(dockerfile\.|Dockerfile\.)(.*)\.build$/\2/') if [ -e builder/build/kasmvnc."$image_name".tar.gz ]; then continue fi echo "Building docker image: $image_name using file: $file" rm -rf .cmake CMakeFiles build.ninja cmake_install.cmake cmake_uninstall.cmake CMakeCache.txt config.h rm -rf unix git checkout HEAD -- unix/ docker build $NETWORK_FLAG -f "$file" -t "$image_name" "$current_dir" exit_code=$? if [ $exit_code -ne 0 ]; then echo "Build failed for $filename" break fi echo "Running container from image '$image_name'" # Run the container and capture the exit code docker run -it $NETWORK_FLAG -v "$current_dir/builder/build":/build --device=/dev/dri:/dev/dri "$image_name" exit_code=$? echo "Container for image '$image_name' " if [ $exit_code -ne 0 ]; then docker run -it $NETWORK_FLAG --entrypoint /bin/bash -u root -v "$current_dir/builder/build":/build --device=/dev/dri:/dev/dri "$image_name" echo "exited with error (exit code $exit_code)." break else echo "finished successfully." images_list+=("$image_name") fi done echo "Removing all built docker images..." for img in "${images_list[@]}"; do echo "Removing docker image: $img" docker rmi -f "$img" done