Files
moonwell-core/start-server.sh
T
2026-03-09 13:52:02 +04:00

108 lines
2.6 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ENV_FILE="${ENV_FILE:-$ROOT_DIR/.env}"
BUILD_FLAG="--build"
FOLLOW_LOGS=0
if [[ -f "$ENV_FILE" ]]; then
set -a
# shellcheck disable=SC1090
source "$ENV_FILE"
set +a
fi
usage() {
cat <<EOF
Usage: $(basename "$0") [--no-build] [--logs]
Starts the AzerothCore docker stack for this repository.
Options:
--no-build Start containers without rebuilding images
--logs Follow auth/world logs after startup
-h, --help Show this help
EOF
}
log() {
printf '[start-server] %s\n' "$*"
}
require_docker() {
if ! command -v docker >/dev/null 2>&1; then
printf 'docker is not installed or not in PATH\n' >&2
exit 1
fi
if ! docker compose version >/dev/null 2>&1; then
printf 'docker compose plugin is not available\n' >&2
printf 'On Ubuntu install: docker-compose-plugin\n' >&2
exit 1
fi
if ! docker info >/dev/null 2>&1; then
printf 'docker daemon is not reachable\n' >&2
printf 'On Ubuntu run: sudo systemctl enable --now docker\n' >&2
printf 'If docker is running but you are a non-root user, add your user to the docker group:\n' >&2
printf ' sudo usermod -aG docker $USER && newgrp docker\n' >&2
exit 1
fi
}
while (($#)); do
case "$1" in
--no-build)
BUILD_FLAG=""
;;
--logs)
FOLLOW_LOGS=1
;;
-h|--help)
usage
exit 0
;;
*)
printf 'Unknown option: %s\n\n' "$1" >&2
usage >&2
exit 1
;;
esac
shift
done
cd "$ROOT_DIR"
require_docker
log "applying module configuration"
bash "$ROOT_DIR/setup-modules.sh"
log "starting docker services"
if [[ -n "$BUILD_FLAG" ]]; then
docker compose up -d --build
else
docker compose up -d
fi
log "synchronizing realmlist"
bash "$ROOT_DIR/sync-realmlist.sh"
log "current service status"
docker compose ps
printf '\n'
printf 'Realm: %s:%s\n' "${ACORE_REALMLIST_PUBLIC_ADDRESS:-127.0.0.1}" "${ACORE_REALMLIST_PORT:-${DOCKER_WORLD_EXTERNAL_PORT:-8085}}"
printf 'World: 127.0.0.1:%s\n' "${DOCKER_WORLD_EXTERNAL_PORT:-8085}"
printf 'Auth: 127.0.0.1:%s\n' "${DOCKER_AUTH_EXTERNAL_PORT:-3724}"
printf 'SOAP: 127.0.0.1:%s\n' "${DOCKER_SOAP_EXTERNAL_PORT:-7878}"
printf 'Account: ./create-account.sh admin your_password\n'
printf 'RealmDB: ./sync-realmlist.sh\n'
printf 'Logs: docker compose logs -f ac-worldserver ac-authserver\n'
if (( FOLLOW_LOGS )); then
docker compose logs -f ac-worldserver ac-authserver
fi