feature(helpers): add stop and remove commands
This commit is contained in:
		
							parent
							
								
									dd7ef19d88
								
							
						
					
					
						commit
						0db9675bc4
					
				@ -4,8 +4,6 @@
 | 
				
			|||||||
# start ab-nginx container using params file variables
 | 
					# start ab-nginx container using params file variables
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TODO: add stop & stop and remove commands
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# text formatting presets
 | 
					# text formatting presets
 | 
				
			||||||
if command -v tput >/dev/null; then
 | 
					if command -v tput >/dev/null; then
 | 
				
			||||||
    cyan=$(tput bold)$(tput setaf 6)
 | 
					    cyan=$(tput bold)$(tput setaf 6)
 | 
				
			||||||
@ -26,6 +24,8 @@ fi
 | 
				
			|||||||
### parameter defaults
 | 
					### parameter defaults
 | 
				
			||||||
doShell=false
 | 
					doShell=false
 | 
				
			||||||
doStatus=false
 | 
					doStatus=false
 | 
				
			||||||
 | 
					doStop=false
 | 
				
			||||||
 | 
					removeStopped=false
 | 
				
			||||||
container_name="ab-nginx"
 | 
					container_name="ab-nginx"
 | 
				
			||||||
NETWORK='nginx_network'
 | 
					NETWORK='nginx_network'
 | 
				
			||||||
SUBNET='172.31.254.0/24'
 | 
					SUBNET='172.31.254.0/24'
 | 
				
			||||||
@ -35,6 +35,8 @@ CONFIG_DIR=""
 | 
				
			|||||||
SERVERS_DIR=""
 | 
					SERVERS_DIR=""
 | 
				
			||||||
WEBROOT_DIR=""
 | 
					WEBROOT_DIR=""
 | 
				
			||||||
volumeMounts=""
 | 
					volumeMounts=""
 | 
				
			||||||
 | 
					stopErr=0
 | 
				
			||||||
 | 
					removeErr=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### functions
 | 
					### functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -54,16 +56,21 @@ checkExist() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
scriptHelp() {
 | 
					scriptHelp() {
 | 
				
			||||||
 | 
					    # header and description
 | 
				
			||||||
    printf "\n%s" "$magenta"
 | 
					    printf "\n%s" "$magenta"
 | 
				
			||||||
    printf '%.0s-' $(seq "$width")
 | 
					    printf '%.0s-' $(seq "$width")
 | 
				
			||||||
    printf "\n%s" "$norm"
 | 
					    printf "\n%s" "$norm"
 | 
				
			||||||
    textBlock "This is a simple helper script so you can avoid typing lengthy commands when working with the ab-nginx container."
 | 
					    textBlock "This is a simple helper script so you can avoid typing lengthy commands when working with the ab-nginx container."
 | 
				
			||||||
    textBlock "The script reads the contents of 'ab-nginx.params' and constructs various 'docker run' commands based on that file. The biggest time-saver is working with certificates. If they are specified in the params file, the script will automatically bind-mount them so nginx serves content via SSL by default."
 | 
					    textBlock "The script reads the contents of 'ab-nginx.params' and constructs various 'docker run' commands based on that file. The biggest time-saver is working with certificates. If they are specified in the params file, the script will automatically bind-mount them so nginx serves content via SSL by default."
 | 
				
			||||||
    newline
 | 
					    newline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # explanatory text
 | 
				
			||||||
    textBlock "If you run the script with no parameters, it will execute the container 'normally': Run in detached mode with nginx automatically launched. If you specified certificates, nginx will serve over SSL by default."
 | 
					    textBlock "If you run the script with no parameters, it will execute the container 'normally': Run in detached mode with nginx automatically launched. If you specified certificates, nginx will serve over SSL by default."
 | 
				
			||||||
    textBlock "Note: Containers (except shell) are always set to restart 'unless-stopped'. You must remove them manually if desired."
 | 
					    textBlock "Note: Containers (except shell) are always set to restart 'unless-stopped'. You must remove them manually if desired."
 | 
				
			||||||
    printf "%s" "$magenta"
 | 
					    printf "%s" "$magenta"
 | 
				
			||||||
    newline
 | 
					    newline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # parameters
 | 
				
			||||||
    textBlock "The script has the following (optional) parameters:"
 | 
					    textBlock "The script has the following (optional) parameters:"
 | 
				
			||||||
    textBlockParam 'parameter in cyan' 'default in yellow'
 | 
					    textBlockParam 'parameter in cyan' 'default in yellow'
 | 
				
			||||||
    newline
 | 
					    newline
 | 
				
			||||||
@ -75,8 +82,16 @@ scriptHelp() {
 | 
				
			|||||||
    newline
 | 
					    newline
 | 
				
			||||||
    textBlockParam '--status'
 | 
					    textBlockParam '--status'
 | 
				
			||||||
    textBlock "Run a search for all AB-NGINX containers and display their name and status."
 | 
					    textBlock "Run a search for all AB-NGINX containers and display their name and status."
 | 
				
			||||||
    printf "%s" "$yellow"
 | 
					 | 
				
			||||||
    newline
 | 
					    newline
 | 
				
			||||||
 | 
					    textBlockParam '--stop'
 | 
				
			||||||
 | 
					    textBlock "Stops the container specified by the '--name' parameter or with the default name 'ab-nginx'."
 | 
				
			||||||
 | 
					    newline
 | 
				
			||||||
 | 
					    textBlockParam '--remove | --stopremvoe'
 | 
				
			||||||
 | 
					    textBlock "Stops and removes the container specified by the '--name' parameter or with the default name 'ab-nginx'."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # footer
 | 
				
			||||||
 | 
					    newline
 | 
				
			||||||
 | 
					    printf "%s" "$yellow"
 | 
				
			||||||
    textBlock"More information can be found at: https://git.asifbacchus.dev/ab-docker/ab-nginx/wiki"
 | 
					    textBlock"More information can be found at: https://git.asifbacchus.dev/ab-docker/ab-nginx/wiki"
 | 
				
			||||||
    printf "\n%s" "$magenta"
 | 
					    printf "\n%s" "$magenta"
 | 
				
			||||||
    printf '%.0s-' $(seq "$width")
 | 
					    printf '%.0s-' $(seq "$width")
 | 
				
			||||||
@ -193,6 +208,15 @@ while [ $# -gt 0 ]; do
 | 
				
			|||||||
        # find containers and check their status
 | 
					        # find containers and check their status
 | 
				
			||||||
        doStatus=true
 | 
					        doStatus=true
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 | 
					    --stop)
 | 
				
			||||||
 | 
					        # stop named container
 | 
				
			||||||
 | 
					        doStop=true
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    --remove | --stopremove)
 | 
				
			||||||
 | 
					        # stop and remove named container
 | 
				
			||||||
 | 
					        doStop=true
 | 
				
			||||||
 | 
					        removeStopped=true
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
        printf "%s\nUnknown option: %s\n" "$err" "$1"
 | 
					        printf "%s\nUnknown option: %s\n" "$err" "$1"
 | 
				
			||||||
        printf "Use '--help' for valid options.\n\n%s" "$norm"
 | 
					        printf "Use '--help' for valid options.\n\n%s" "$norm"
 | 
				
			||||||
@ -211,6 +235,46 @@ if [ "$doStatus" = "true" ]; then
 | 
				
			|||||||
    exit 0
 | 
					    exit 0
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# stop container
 | 
				
			||||||
 | 
					if [ "$doStop" = "true" ]; then
 | 
				
			||||||
 | 
					    printf "\nStopping container '%s'... " "$container_name"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # ensure container exists
 | 
				
			||||||
 | 
					    if ! docker inspect "$container_name" >/dev/null 2>&1; then
 | 
				
			||||||
 | 
					        printf "[ERROR]: No container with that name found.\n\n"
 | 
				
			||||||
 | 
					        exit 11
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # stop and/or remove container
 | 
				
			||||||
 | 
					    if ! docker stop "$container_name" >/dev/null 2>&1; then stopErr=1; fi
 | 
				
			||||||
 | 
					    if [ "$removeStopped" = "true" ] && [ "$stopErr" -eq 0 ]; then
 | 
				
			||||||
 | 
					        if ! docker rm "$container_name" >/dev/null 2>&1; then removeErr=1; fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # update status message
 | 
				
			||||||
 | 
					    if [ "$stopErr" -eq 1 ]; then
 | 
				
			||||||
 | 
					        printf "[ERROR]: Unable to stop container. Please try removing it manually.\n\n"
 | 
				
			||||||
 | 
					        exit 12
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if [ "$removeErr" -eq 1 ]; then
 | 
				
			||||||
 | 
					        printf "[STOPPED]\n"
 | 
				
			||||||
 | 
					        printf "[ERROR]: Unable to remove container. Please try removing it manually.\n\n"
 | 
				
			||||||
 | 
					        exit 13
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if [ "$removeStopped" = "true" ]; then
 | 
				
			||||||
 | 
					        printf "[REMOVED]\n\n"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        printf "[STOPPED]\n\n"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    exit 0
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# run container
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# create network if it doesn't already exist
 | 
					# create network if it doesn't already exist
 | 
				
			||||||
docker network inspect ${NETWORK} >/dev/null 2>&1 ||
 | 
					docker network inspect ${NETWORK} >/dev/null 2>&1 ||
 | 
				
			||||||
    docker network create \
 | 
					    docker network create \
 | 
				
			||||||
@ -289,7 +353,8 @@ else
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### exit gracefully
 | 
					#
 | 
				
			||||||
 | 
					# exit gracefully
 | 
				
			||||||
exit 0
 | 
					exit 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -301,5 +366,7 @@ exit 0
 | 
				
			|||||||
# 3:        incorrect permissions to access docker
 | 
					# 3:        incorrect permissions to access docker
 | 
				
			||||||
# 1x:       operation errors
 | 
					# 1x:       operation errors
 | 
				
			||||||
#   11      no container found with specified name
 | 
					#   11      no container found with specified name
 | 
				
			||||||
 | 
					#   12      unable to stop container
 | 
				
			||||||
 | 
					#   13      unable to remove container
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#EOF
 | 
					#EOF
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user