#!/bin/bash # Script: your_script.sh # Description: Brief description of what the script does. # Usage: ./your_script.sh [options] # Options: # -h, --help Display this help message # -o, --option Specify an option # Function to display usage information function show_usage() { echo "Usage: $0 [options]" echo "Options:" echo " -h, --help Display this help message" echo " -d, --deploy Delete possibly old images and container and deploy a new container" echo " -f, --follow If deployed will follow the log output" echo " -s, --stay If deployed will leave the container running instead of stopping it" } # Check for the number of arguments # if [ "$#" -eq 0 ]; then # show_usage # exit 1 # fi # Parse command-line options while [[ "$#" -gt 0 ]]; do case $1 in -h|--help) show_usage exit 0 ;; -d|--deploy) deploy=true ;; -f|--follow) follow=true ;; *) echo "Unknown option: $1" show_usage exit 1 ;; esac shift done image_name="solidjs-docker" container_name="solidjs" if [ $deploy ]; then # Check if the container exists if [ "$(docker ps -a -q -f name=$container_name)" ]; then if [ "$(docker ps -q -f name=$container_name)" ]; then # Container exists, stop and remove it echo "Stopping and removing existing container..." echo "Stopped $(docker stop $container_name)" else echo "Removing existing container..." fi echo "Removed $(docker rm $container_name)" docker rmi $(docker images -q $image_name) fi fi # Run Docker container in the background and capture container ID docker build --no-cache -t $image_name . if [ $deploy ]; then container_id=$(docker run --name $container_name -p 3000:3000 -d $image_name) echo "Container deployed: $container_id" elif [ !$follow ]; then exit 0 fi # Function to display a message after interrupt function exit_handler() { # Clear the current line echo -e "\033[2K" if [ $stay ]; then echo "Container is still running. To stop it, use:" echo "docker stop $container_id" else echo "Stopping the container ..." docker stop $container_id echo "Stopped." fi } # Register the exit_handler function to be called when the script receives the INT signal (Ctrl+C) trap exit_handler INT # Run Docker logs on the specified container docker logs -f $container_id