#!/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 < 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 < 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 <