Feat(Docker/bash): docker-compose system rework (#4488)

## ⚠️ATTENTION! ⚠️ Upgrading procedure:

**Database:** After this PR will be merged you need to backup your DB first (you can use the db-assembler or any mysql client to generate the dump) and restore it after.  The reason is that we use now docker named volumes instead of binded ones to improve performance.

**Conf & client data**: if you use the default configuration, both the etc and the data folder are now available inside the **/env/docker**. 

Finally, you can cleanup the /docker folder previously used by our system.

## Changes Proposed:

This PR will implement the [devcontainer ](https://code.visualstudio.com/docs/remote/containers) feature for VSCode. Allowing us to develop and debug directly within the container in the same way on all OSes.

* Implemented support for vscode dev-container feature by remote-extension suite
* Docker performance optimizations for MacOS and non-linux hosts
* Bash system improvements
* Implemented first command using Deno runtime environment (typescript) and [commander.js]
* Implemented wait mechanism for db_assembler
* Implemented db migration command
* possibility to run the authserver and worldserver with GDB using the integrated simple-restarter
* Implemented docker multi-stage mechanism to use one single Dockerfile for all the services
* client-data downloader now creates a placeholder to avoid downloading the same version of data files multiple times
* deployment of pre-compiled docker images on [docker hub](https://hub.docker.com/u/acore), you can test them [here](https://github.com/azerothcore/acore-docker)
This commit is contained in:
Yehonal
2021-04-22 09:57:05 +02:00
committed by GitHub
parent 4a8faafaff
commit 380f406248
100 changed files with 2747 additions and 777 deletions

View File

@@ -0,0 +1,36 @@
#!/usr/bin/env bash
CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/"
echo "> Init and updating submodules..."
function subrepoUpdate() {
repo=$1
branch=$2
folder=$3
toClone=$(git ls-remote --heads "$repo" "$branch" | wc -l)
if [[ -d "$folder" ]]; then
if [[ ! -f "$folder/.gitrepo" ]]; then
git subrepo init "$folder" -r "$repo" -b "$branch"
fi
if [[ $toClone -eq 0 ]]; then
git subrepo push "$folder"
fi
else
# try-catch
set +e
git subrepo clone "$repo" "$folder" -b "$branch"
set -e
fi
git subrepo clean "$folder"
git subrepo pull "$folder"
git subrepo push "$folder" -s
git subrepo clean "$folder"
}

View File

@@ -0,0 +1,12 @@
function subtreeFlow {
local name=$1
local path=$2
local repo=$3
local branch=$4
local prefix="$path/$name"
echo "> Adding subtree if not exists"
git subtree add --prefix "$prefix" "$repo" "$branch"
echo "> Pulling latest changes from remote subtree"
git subtree pull --prefix "$prefix" "$repo" "$branch"
}