217 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			217 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
# TODO(michaeldelago) decide if we need a wrapper like this around docker
 | 
						|
# commands.
 | 
						|
#
 | 
						|
# Running the docker commands should be simple and familiar.
 | 
						|
# Introducting extra steps through the dashboard can cause issues with people
 | 
						|
# getting started, especially if they already know docker.
 | 
						|
#
 | 
						|
# If a new user knows docker, they will feel (pretty close) to right at home.
 | 
						|
# If a new user doesn't know docker, it's easy to learn and the knowledge
 | 
						|
# applies to much more than azerothcore
 | 
						|
 | 
						|
set -euo pipefail
 | 
						|
 | 
						|
COMPOSE_DOCKER_CLI_BUILD="1"
 | 
						|
DOCKER_BUILDKIT="1"
 | 
						|
# BUILDKIT_INLINE_CACHE="1"
 | 
						|
 | 
						|
function usage () {
 | 
						|
    cat <<EOF
 | 
						|
Wrapper for shell scripts around docker
 | 
						|
 | 
						|
usage: $(basename $0) ACTION [ ACTION... ] [ ACTION_ARG... ]
 | 
						|
 | 
						|
actions:
 | 
						|
EOF
 | 
						|
# the `-s` will remove the "#" and properly space the action and description
 | 
						|
    cat <<EOF | column -t -l2 -s'#'
 | 
						|
> start:app             # Start the development worldserver and authserver
 | 
						|
> start:app:d           # Start the development worldserver and authserver in detached mode
 | 
						|
> build                 # build the development worldserver and authserver
 | 
						|
> pull                  # pull the development worldserver and authserver
 | 
						|
> build:nocache         # build the development worldserver and authserver without cache
 | 
						|
> clean:build           # clean build artifacts from the dev server
 | 
						|
> client-data           # download client data in the dev server
 | 
						|
> dev:up start          # the dev server
 | 
						|
> dev:build             # compile azerothcore using the dev server
 | 
						|
> dev:dash              # execute the dashboard in the dev server container
 | 
						|
> dev:shell [ ARGS... ] # open a bash shell in the dev server
 | 
						|
> prod:build            # Build the service containers used by acore-docker
 | 
						|
> prod:pull             # Pull the containers used by acore-docker
 | 
						|
> prod:up               # Start the services used by acore-docker
 | 
						|
> prod:up:d             # start the services used by acore-docker in the background
 | 
						|
> attach SERVICE        # attach to a service currently running in docker compose
 | 
						|
EOF
 | 
						|
}
 | 
						|
 | 
						|
# If no args, just spit usage and exit
 | 
						|
[[ $# -eq 0 ]] && usage && exit
 | 
						|
 | 
						|
# loop through commands passed
 | 
						|
while [[ $# -gt 0 ]]; do
 | 
						|
    case "$1" in
 | 
						|
        start:app)
 | 
						|
            set -x
 | 
						|
            docker compose up
 | 
						|
            set +x
 | 
						|
            # pop the head off of the queue of args
 | 
						|
            # After this, the value of $1 is the value of $2
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        start:app:d)
 | 
						|
            set -x
 | 
						|
            docker compose up -d
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        build)
 | 
						|
            set -x
 | 
						|
            docker compose build
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        pull)
 | 
						|
            set -x
 | 
						|
            docker compose pull
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        build:nocache)
 | 
						|
            set -x
 | 
						|
            docker compose build --no-cache
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        clean:build)
 | 
						|
            set -x
 | 
						|
            # Don't run 'docker buildx prune' since it may "escape" our bubble
 | 
						|
            # and affect other projects on the user's workstation/server
 | 
						|
            cat <<EOF
 | 
						|
This command has been deprecated, and at the moment does not do anything.
 | 
						|
If you'd like to build without cache, use the command './acore.sh docker build:nocache' or look into the 'docker buildx prune command'
 | 
						|
 | 
						|
> https://docs.docker.com/engine/reference/commandline/buildx_prune/
 | 
						|
EOF
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        client-data)
 | 
						|
            set -x
 | 
						|
            docker compose up ac-client-data-init
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        dev:up)
 | 
						|
            set -x
 | 
						|
            docker compose --profile dev up ac-dev-server -d
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        dev:build)
 | 
						|
            set -x
 | 
						|
            docker compose --profile dev run --rm ac-dev-server bash /azerothcore/acore.sh compiler build
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        dev:dash)
 | 
						|
            set -x
 | 
						|
            docker compose --profile dev run --rm ac-dev-server bash /azerothcore/acore.sh ${@:2}
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        dev:shell)
 | 
						|
            set -x
 | 
						|
            docker compose --profile dev up -d ac-dev-server
 | 
						|
            docker compose --profile dev exec ac-dev-server bash ${@:2}
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        build:prod|prod:build)
 | 
						|
            cat <<EOF
 | 
						|
This command is deprecated and is scheduled to be removed. Please update any scripts or automation accordingly to use the other command:
 | 
						|
 | 
						|
    ./acore.sh docker build
 | 
						|
 | 
						|
The build will continue in 3 seconds
 | 
						|
EOF
 | 
						|
            sleep 3
 | 
						|
            set -x
 | 
						|
            docker compose build
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        pull:prod|prod:pull)
 | 
						|
            cat <<EOF
 | 
						|
This command is deprecated and is scheduled to be removed. Please update any scripts or automation accordingly to use the other command:
 | 
						|
 | 
						|
    ./acore.sh docker pull
 | 
						|
 | 
						|
The image pull will continue in 3 seconds
 | 
						|
EOF
 | 
						|
            sleep 3
 | 
						|
            set -x
 | 
						|
            docker compose pull
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        prod:up|start:prod)
 | 
						|
            cat <<EOF
 | 
						|
This command is deprecated and is scheduled to be removed. Please update any scripts or automation accordingly to use the other command:
 | 
						|
 | 
						|
    ./acore.sh docker start:app
 | 
						|
 | 
						|
The containers will start in 3 seconds
 | 
						|
EOF
 | 
						|
            sleep 3
 | 
						|
            set -x
 | 
						|
            docker compose up
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        prod:up:d|start:prod:d)
 | 
						|
            cat <<EOF
 | 
						|
This command is deprecated and is scheduled to be removed. Please update any scripts or automation accordingly to use the other command:
 | 
						|
 | 
						|
    ./acore.sh docker start:app:d
 | 
						|
 | 
						|
The containers will start in 3 seconds
 | 
						|
EOF
 | 
						|
            sleep 3
 | 
						|
            set -x
 | 
						|
            docker compose up -d
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            ;;
 | 
						|
 | 
						|
        attach)
 | 
						|
            SERVICE="$2"
 | 
						|
            set -x
 | 
						|
            docker compose attach "$SERVICE"
 | 
						|
            set +x
 | 
						|
            shift
 | 
						|
            shift # Second to pass the argument
 | 
						|
            ;;
 | 
						|
 | 
						|
        *)
 | 
						|
            echo "Unknown or empty arg"
 | 
						|
            usage
 | 
						|
            exit 1
 | 
						|
    esac
 | 
						|
done
 |