From e4fafc61dd966b6077f4cd575c575473f0643d88 Mon Sep 17 00:00:00 2001 From: Yehonal Date: Wed, 28 Apr 2021 22:26:39 +0200 Subject: [PATCH 1/8] fix(Docker): windows improvements and permissions fix (#5444) --- .dockerignore | 1 + .gitattributes | 7 +- apps/ci/docker/.env.dist | 11 -- apps/ci/docker/ci-docker-config.sh | 3 - apps/compiler/includes/functions.sh | 13 +- apps/db_assembler/includes/functions.sh | 2 +- apps/docker/Dockerfile | 153 +++++++++++++----- apps/docker/docker-cmd.ts | 161 ++++++++++++++----- apps/installer/includes/os_configs/debian.sh | 4 +- apps/installer/includes/os_configs/ubuntu.sh | 2 +- bin/acore-docker-build | 19 ++- bin/acore-docker-update | 7 + conf/dist/config.sh | 2 +- conf/dist/env.docker | 24 +-- docker-compose.yml | 86 ++++++++-- 15 files changed, 342 insertions(+), 153 deletions(-) delete mode 100644 apps/ci/docker/.env.dist delete mode 100755 apps/ci/docker/ci-docker-config.sh create mode 100644 bin/acore-docker-update diff --git a/.dockerignore b/.dockerignore index 5baa9d3d99..44c4511bc4 100644 --- a/.dockerignore +++ b/.dockerignore @@ -10,3 +10,4 @@ !/env/docker/etc/worldserver.conf.dockerdist /.env* .idea +!.gitkeep diff --git a/.gitattributes b/.gitattributes index af7d9cf916..f4cd590bbe 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,10 +1,5 @@ # Auto detect text files and perform LF normalization -* text=auto - -# End of line rules -*.sh eol=lf -*.sh.dist eol=lf -bin/* eol=lf +* text eol=lf # Whitespace rules # strict (no trailing, no tabs) diff --git a/apps/ci/docker/.env.dist b/apps/ci/docker/.env.dist deleted file mode 100644 index 3a5f289976..0000000000 --- a/apps/ci/docker/.env.dist +++ /dev/null @@ -1,11 +0,0 @@ -WORLDSERVER_DATA=./docker/worldserver/data -WORLDSERVER_ETC=./docker/worldserver/etc -WORLDSERVER_LOGS=./docker/worldserver/logs - -AUTHSERVER_ETC=./docker/authserver/etc -AUTHSERVER_LOGS=./docker/authserver/logs - -WORLD_EXTERNAL_PORT=8085 -AUTH_EXTERNAL_PORT=3724 -DB_EXTERNAL_PORT=9000 -DB_ROOT_PASSWORD=password diff --git a/apps/ci/docker/ci-docker-config.sh b/apps/ci/docker/ci-docker-config.sh deleted file mode 100755 index f3d6e20928..0000000000 --- a/apps/ci/docker/ci-docker-config.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -cp apps/ci/docker/.env.dist .env diff --git a/apps/compiler/includes/functions.sh b/apps/compiler/includes/functions.sh index 7d4bf5176a..1e3c83c6ba 100644 --- a/apps/compiler/includes/functions.sh +++ b/apps/compiler/includes/functions.sh @@ -1,16 +1,11 @@ function comp_clean() { - echo "Cleaning build files" + DIRTOCLEAN=${BUILDPATH:-var/build/obj} + PATTERN="$DIRTOCLEAN/*" - CWD=$(pwd) + echo "Cleaning build files in $DIRTOCLEAN" - cd $BUILDPATH - - make -f Makefile clean || true - make clean || true - find -iname '*cmake*' -not -name CMakeLists.txt -exec rm -rf {} \+ - - cd $CWD + [ -d "$DIRTOCLEAN" ] && rm -rf $PATTERN } function comp_configure() { diff --git a/apps/db_assembler/includes/functions.sh b/apps/db_assembler/includes/functions.sh index 86973e1042..cedea417cf 100644 --- a/apps/db_assembler/includes/functions.sh +++ b/apps/db_assembler/includes/functions.sh @@ -12,7 +12,7 @@ function dbasm_waitMysqlConn() { echo "DBASM Timeout: Cannot ping mysql!" 1>&2 exit 64 fi - echo "Cannot ping mysql, retry in $DBASM_WAIT_TIMEOUT seconds (remaining: $COUNT/$DBASM_WAIT_RETRIES)..." + echo "Cannot ping mysql on $DBHOST:$DBPORT, retry in $DBASM_WAIT_TIMEOUT seconds (remaining: $COUNT/$DBASM_WAIT_RETRIES)..." sleep $DBASM_WAIT_TIMEOUT done } diff --git a/apps/docker/Dockerfile b/apps/docker/Dockerfile index 6c95ffa211..6f55fbc99e 100644 --- a/apps/docker/Dockerfile +++ b/apps/docker/Dockerfile @@ -5,11 +5,12 @@ # #================================================================= -FROM ubuntu:20.04 as dev +FROM ubuntu:20.04 as base ARG USER_ID=1000 ARG GROUP_ID=1000 +ARG DOCKER_USER=acore -LABEL description="AC Worldserver Debug Container for use with Visual Studio" +LABEL description="AC base image for dev containers" # List of timezones: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones @@ -21,15 +22,14 @@ ENV TZ=Etc/UTC # set noninteractive mode so tzdata doesn't ask to set timezone on install ENV DEBIAN_FRONTEND=noninteractive -# install essentials -RUN apt-get update && apt-get install -y gdb gdbserver git dos2unix lsb-core sudo curl unzip - -# copy everything so we can work directly within the container -# using tools such as vscode dev-container -COPY . /azerothcore - -# install the required dependencies to run the worldserver -RUN /azerothcore/acore.sh install-deps +# Do not use acore dashboard to install +# since it's not cacheable by docker +RUN apt-get update && apt-get install -y gdb gdbserver git dos2unix lsb-core sudo curl unzip \ + make cmake clang libmysqlclient-dev libace-dev \ + build-essential libtool cmake-data openssl libgoogle-perftools-dev \ + libssl-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev mysql-client \ + libncurses5-dev ccache \ + && rm -rf /var/lib/apt/lists/* # change timezone in container RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata @@ -40,27 +40,36 @@ RUN addgroup --gid $GROUP_ID acore && \ passwd -d acore && \ echo 'acore ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers -RUN mkdir -p /azerothcore +# must be created to set the correct permissions on them +RUN mkdir -p /azerothcore/env/dist/data +RUN mkdir -p /azerothcore/env/dist/logs +RUN mkdir -p /azerothcore/env/dist/etc +RUN mkdir -p /azerothcore/var/build # Correct permissions for non-root operations -RUN chown -R acore:acore \ - /run \ - /home/acore \ - /opt/ \ - /azerothcore +RUN chown -R $DOCKER_USER:$DOCKER_USER /home/acore +RUN chown -R $DOCKER_USER:$DOCKER_USER /run +RUN chown -R $DOCKER_USER:$DOCKER_USER /opt +RUN chown -R $DOCKER_USER:$DOCKER_USER /azerothcore -USER acore +USER $DOCKER_USER + +# copy everything so we can work directly within the container +# using tools such as vscode dev-container +# NOTE: this folder is different by the /azerothcore (which is binded instead) +COPY --chown=$DOCKER_USER:$DOCKER_USER . /azerothcore WORKDIR /azerothcore #================================================================ # -# BUILD STAGE: to prepare binaries for the production services +# Dev: create dev server image # #================================================================= -FROM dev as build -RUN bash acore.sh compiler build +FROM base as dev + +LABEL description="AC dev image for dev containers" #================================================================ # @@ -70,6 +79,12 @@ RUN bash acore.sh compiler build FROM ubuntu:20.04 as servicebase +ARG USER_ID=1000 +ARG GROUP_ID=1000 +ARG DOCKER_USER=acore + +LABEL description="AC service image for server applications" + # List of timezones: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones # set timezone environment variable @@ -78,51 +93,105 @@ ENV TZ=Etc/UTC # set noninteractive mode so tzdata doesn't ask to set timezone on install ENV DEBIAN_FRONTEND=noninteractive -COPY --from=build /azerothcore/env /azerothcore/env +# Create a non-root user +RUN addgroup --gid $GROUP_ID acore && \ + adduser --disabled-password --gecos '' --uid $USER_ID --gid $GROUP_ID acore && \ + passwd -d acore && \ + echo 'acore ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers -# copy the sources from the host machine -COPY apps /azerothcore/apps -COPY bin /azerothcore/bin -COPY conf /azerothcore/conf -COPY data /azerothcore/data -COPY deps /azerothcore/deps -COPY acore.json /azerothcore/acore.json -COPY acore.sh /azerothcore/acore.sh - -# install the required dependencies to run the authserver -RUN apt-get update && apt-get install -y gdb gdbserver net-tools tzdata libmysqlclient-dev libace-dev mysql-client curl unzip; +# install the required dependencies to run the server +RUN apt-get update && apt-get install -y dos2unix gdb gdbserver net-tools tzdata libmysqlclient-dev libace-dev mysql-client curl unzip && rm -rf /var/lib/apt/lists/* ; # change timezone in container RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata +# copy the sources from the host machine +COPY --chown=$DOCKER_USER:$DOCKER_USER apps /azerothcore/apps +COPY --chown=$DOCKER_USER:$DOCKER_USER bin /azerothcore/bin +COPY --chown=$DOCKER_USER:$DOCKER_USER conf /azerothcore/conf +COPY --chown=$DOCKER_USER:$DOCKER_USER data /azerothcore/data +COPY --chown=$DOCKER_USER:$DOCKER_USER deps /azerothcore/deps +COPY --chown=$DOCKER_USER:$DOCKER_USER acore.json /azerothcore/acore.json +COPY --chown=$DOCKER_USER:$DOCKER_USER acore.sh /azerothcore/acore.sh + +# Correct permissions for non-root operations +RUN chown -R $DOCKER_USER:$DOCKER_USER /home/acore +RUN chown -R $DOCKER_USER:$DOCKER_USER /run +RUN chown -R $DOCKER_USER:$DOCKER_USER /opt + +RUN chown $DOCKER_USER:$DOCKER_USER /azerothcore + +USER $DOCKER_USER + +# must be created to avoid permissions errors +RUN mkdir -p /azerothcore/env/dist/data +RUN mkdir -p /azerothcore/env/dist/logs +RUN mkdir -p /azerothcore/env/dist/etc +RUN mkdir -p /azerothcore/env/dist/bin + WORKDIR /azerothcore/ -RUN cp -n "/azerothcore/env/docker/etc/worldserver.conf.dockerdist" "/azerothcore/env/dist/etc/worldserver.conf" -RUN cp -n "/azerothcore/env/docker/etc/authserver.conf.dockerdist" "/azerothcore/env/dist/etc/authserver.conf" +#================================================================ +# +# AUTH & WORLD local: images used for local services +# These images don't include binaries by default +# +#================================================================= + +FROM servicebase as authserver-local + +LABEL description="AC authserver image for local environment" + +CMD ./acore.sh run-authserver + +FROM servicebase as worldserver-local + +LABEL description="AC worldserver image for local environment" + +CMD ./acore.sh run-worldserver + +#================================================================ +# +# BUILD: compile sources +# +#================================================================= +FROM base as build + +LABEL description="AC Image used by the build stage to generate production images" + +RUN bash bin/acore-docker-build #================================================================ # # AUTH SERVICE: create a ready-to-use authserver image +# with binaries included # #================================================================= +FROM authserver-local as authserver -FROM servicebase as authserver +LABEL description="AC Production ready authserver" -CMD ./acore.sh run-authserver +ARG DOCKER_USER=acore + +COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/etc /azerothcore/env/dist/etc +COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/authserver /azerothcore/env/dist/bin/authserver #================================================================ # # WORLD SERVICE: create a ready-to-use worldserver image +# with binaries and data included # #================================================================= +FROM authserver-local as worldserver -FROM servicebase as worldserver +LABEL description="AC Production ready worldserver" + +ARG DOCKER_USER=acore + +COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/etc /azerothcore/env/dist/etc +COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/worldserver /azerothcore/env/dist/bin/worldserver ENV DATAPATH=/azerothcore/env/dist/data RUN /azerothcore/acore.sh client-data -CMD ./acore.sh run-worldserver - - - diff --git a/apps/docker/docker-cmd.ts b/apps/docker/docker-cmd.ts index f666ca0944..8fdd94e886 100644 --- a/apps/docker/docker-cmd.ts +++ b/apps/docker/docker-cmd.ts @@ -7,59 +7,98 @@ import { const program = new Command(); -program.name("acore.sh docker") +program + .name("acore.sh docker") .description("Shell scripts for docker") .version("1.0.0"); shellCommandFactory( "start:app", "Startup the authserver and worldserver apps", - "docker-compose --profile app up", + ["docker-compose --profile app up"], ); shellCommandFactory( "start:app:d", "Startup the authserver and worldserver apps in detached mode", - "docker-compose --profile app up -d", + ["docker-compose --profile app up -d"], ); -shellCommandFactory( - "start:dev", - "Startup the dev server", - "docker-compose --profile dev up", -); - -shellCommandFactory( - "build", - "Build the authserver and worldserver", - `docker-compose run --rm ac-dev-server bash bin/acore-docker-build`, -); +shellCommandFactory("build", "Build the authserver and worldserver", [ + "docker-compose --profile all build", + "docker image prune -f", + "docker-compose run --rm ac-build bash bin/acore-docker-update", +]); shellCommandFactory( "build:clean", - "Clean build data", - `docker-compose run --rm ac-dev-server bash rm -rf var/build`, + "Clean and run build", + [ + "docker-compose --profile all build", + "docker image prune -f", + `docker-compose run --rm ac-build bash acore.sh compiler clean`, + "docker-compose run --rm ac-build bash bin/acore-docker-update", + ], +); + +shellCommandFactory( + "build:nocache", + "Build the authserver and worldserver without docker cache", + [ + "docker-compose --profile all build --no-cache", + "docker image prune -f", + "docker-compose run --rm ac-build bash bin/acore-docker-update", + ], +); + +shellCommandFactory( + "build:compile", + "Run the compilation process only, without rebuilding all docker images and importing db", + [ + "docker-compose build ac-build", + "docker image prune -f", + "docker-compose run --rm ac-build bash acore.sh compiler build", + ], ); shellCommandFactory( "client-data", "Download client data inside the ac-data volume", - "docker-compose run --rm ac-dev-server bash acore.sh client-data", + ["docker-compose run --rm ac-worldserver bash acore.sh client-data"], ); shellCommandFactory( "db-import", "Create and upgrade the database with latest updates", - "docker-compose run --rm ac-dev-server bash acore.sh db-assembler import-all", + ["docker-compose run --rm ac-build bash acore.sh db-assembler import-all"], ); shellCommandFactory( - "dashboard [args...]", - "Execute acore dashboard within a running ac-dev-server", - "docker-compose exec ac-dev-server bash acore.sh", + "dev:up", + "Start the dev server container", + ["docker-compose up ac-dev-server"], ); -program.command("attach [service]") +shellCommandFactory( + "dev:build", + "Build using the dev server, it uses volumes to compile which can be faster on linux & WSL", + ["docker-compose run --rm ac-dev-server bash acore.sh compiler build"], +); + +shellCommandFactory( + "dev:dash [args...]", + "Execute acore dashboard within a running ac-dev-server", + ["docker-compose run --rm ac-dev-server bash acore.sh"], +); + +shellCommandFactory( + "dev:shell [args...]", + "Open an interactive shell within the dev server", + ["docker-compose run --rm ac-dev-server bash"], +); + +program + .command("attach [service]") .description("attach to a service") .action(async (service: string | undefined) => { const { run } = Deno; @@ -84,6 +123,11 @@ program.command("attach [service]") let services = new TextDecoder().decode(output).split("\n"); + if (!services) { + console.error("No services available!"); + return + } + services.pop(); services = services.slice(2); @@ -99,6 +143,11 @@ program.command("attach [service]") selService = services[0]; } + if (!selService) { + console.log(`Service ${service} is not available`) + return; + } + command = `docker attach ${selService.split(" ")[0]}`; console.log(ink.colorize(`>>>>> Running: ${command}`)); @@ -121,9 +170,12 @@ program.command("attach [service]") shellCmd.close(); }); -program.command("quit").description("Close docker command").action(()=> { - process.exit(0) -}) +program + .command("quit") + .description("Close docker command") + .action(() => { + process.exit(0); + }); // Handle it however you like // e.g. display usage @@ -133,42 +185,63 @@ while (true) { const command = await Input.prompt({ message: "Enter the command:", }); + console.log(command) await program.parseAsync(command.split(" ")); } else { await program.parseAsync(Deno.args); - process.exit(0) + process.exit(0); } } - - +/** + * + * @param name + * @param description + * @param commands you can pass one or more commands, they will be executed sequentially + * @returns + */ function shellCommandFactory( name: string, description: string, - command: string, + commands: string[], ): Command { - return program.command(name) + return program + .command(name) .description( - `${description}. Command: \n"${ink.colorize(`${command}`)}"\n`, + `${description}. Command: \n"${ + ink.colorize( + `${commands.join(" && ")}`, + ) + }"\n`, ) .action(async (args: any[] | undefined) => { const { run } = Deno; - console.log(ink.colorize(`>>>>> Running: ${command}`)); + for (const command of commands) { + console.log( + ink.colorize(`>>>>> Running: ${command}`), + ); - const cmd = command.split(" "); + const cmd = command.split(" "); - if (Array.isArray(args)) { - cmd.push(...args); + if (Array.isArray(args)) { + cmd.push(...args); + } + + const shellCmd = run({ + cmd, + cwd: process.cwd(), + }); + + const status = await shellCmd.status(); + + if (!status.success) { + throw new Error(`Failed with error: ${status.code}, however, + it's not related to this Deno script directly. An error occurred within + the script called by the command itself`); + } + + shellCmd.close(); } - - const shellCmd = run({ - cmd, - cwd: process.cwd(), - }); - - await shellCmd.status(); - - shellCmd.close(); }); } diff --git a/apps/installer/includes/os_configs/debian.sh b/apps/installer/includes/os_configs/debian.sh index a8bd531e07..cfe5b40dbd 100644 --- a/apps/installer/includes/os_configs/debian.sh +++ b/apps/installer/includes/os_configs/debian.sh @@ -9,9 +9,9 @@ sudo apt-get update -y if [[ $DEBIAN_VERSION -eq "10" ]]; then sudo apt-get install -y git cmake make gcc g++ clang default-libmysqlclient-dev \ libssl-dev libbz2-dev libreadline-dev libncurses-dev mariadb-server \ - libace-6.* libace-dev curl unzip + libace-6.* libace-dev curl unzip gdb gdbserver else # Debian 8 and 9 should work using this sudo apt-get install -y git cmake make gcc g++ clang libmysqlclient-dev \ libssl1.0-dev libbz2-dev libreadline-dev libncurses-dev \ - mysql-server libace-6.* libace-dev curl unzip + mysql-server libace-6.* libace-dev curl unzip gdb gdbserver fi diff --git a/apps/installer/includes/os_configs/ubuntu.sh b/apps/installer/includes/os_configs/ubuntu.sh index 63ef36d513..d37b9c0b3a 100644 --- a/apps/installer/includes/os_configs/ubuntu.sh +++ b/apps/installer/includes/os_configs/ubuntu.sh @@ -15,7 +15,7 @@ if [[ $CONTINUOUS_INTEGRATION || $DOCKER ]]; then libssl-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev mysql-client \ libncurses5-dev ccache curl unzip else - sudo apt-get install -y git gcc g++ \ + sudo apt-get install -y git gcc g++ gdb gdbserver \ libssl-dev libbz2-dev libreadline-dev libncurses-dev \ mysql-server libace-6.* fi diff --git a/bin/acore-docker-build b/bin/acore-docker-build index 1e3d050d76..d7cc6e244e 100755 --- a/bin/acore-docker-build +++ b/bin/acore-docker-build @@ -1,15 +1,20 @@ #!/usr/bin/env bash -bash acore.sh compiler build && bash acore.sh db-assembler import-all +cd /azerothcore -CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -ENV_PATH=$(readlink -f "$CUR_PATH/../env") +bash acore.sh compiler build echo "Generating confs..." -cp -n "$ENV_PATH/docker/etc/worldserver.conf.dockerdist" "$ENV_PATH/dist/etc/worldserver.conf" -cp -n "$ENV_PATH/docker/etc/authserver.conf.dockerdist" "$ENV_PATH/dist/etc/authserver.conf" +cp -n "env/docker/etc/worldserver.conf.dockerdist" "env/dist/etc/worldserver.conf" +cp -n "env/docker/etc/authserver.conf.dockerdist" "env/dist/etc/authserver.conf" echo "Fixing EOL..." -dos2unix "$ENV_PATH/dist/etc/"* +# using -n (new file mode) should also fix the issue +# when the file is created with the default acore user but you +# set a different user into the docker configurations +for file in "env/dist/etc/"* +do + dos2unix -n $file $file +done + diff --git a/bin/acore-docker-update b/bin/acore-docker-update new file mode 100644 index 0000000000..0b91b50fb6 --- /dev/null +++ b/bin/acore-docker-update @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$CUR_PATH/acore-docker-build" + +bash acore.sh db-assembler import-all diff --git a/conf/dist/config.sh b/conf/dist/config.sh index c9ef22abc7..d6bd5534b8 100644 --- a/conf/dist/config.sh +++ b/conf/dist/config.sh @@ -102,7 +102,7 @@ readarray -td, DATABASES <<<"$DBLIST"; OUTPUT_FOLDER=${OUTPUT_FOLDER:-"$AC_PATH_ROOT/env/dist/sql/"} -DBASM_WAIT_TIMEOUT=${DBASM_WAIT_TIMEOUT:-1} +DBASM_WAIT_TIMEOUT=${DBASM_WAIT_TIMEOUT:-5} DBASM_WAIT_RETRIES=${DBASM_WAIT_RETRIES:-3} ####### BACKUP diff --git a/conf/dist/env.docker b/conf/dist/env.docker index 28e91af917..434782c2d1 100644 --- a/conf/dist/env.docker +++ b/conf/dist/env.docker @@ -5,19 +5,23 @@ DOCKER_AC_ENV_FILE= -DOCKER_DATA=./env/docker/data -DOCKER_ETC=./env/docker/etc -DOCKER_LOGS=./env/docker/logs -DOCKER_CONF=./conf +DOCKER_VOL_DATA= +DOCKER_VOL_ETC= +DOCKER_VOL_LOGS= +DOCKER_VOL_CONF= -DOCKER_WORLD_EXTERNAL_PORT=8085 -DOCKER_AUTH_EXTERNAL_PORT=3724 -DOCKER_DB_EXTERNAL_PORT=3306 -DOCKER_DB_ROOT_PASSWORD=password -DOCKER_SOAP_EXTERNAL_PORT=7878 +DOCKER_WORLD_EXTERNAL_PORT= +DOCKER_SOAP_EXTERNAL_PORT= +DOCKER_AUTH_EXTERNAL_PORT= +DOCKER_DB_EXTERNAL_PORT= +DOCKER_DB_ROOT_PASSWORD= + +DOCKER_USER= +DOCKER_USER_ID= +DOCKER_GROUP_ID= # To maximize the performance on MAC you can change the DOCKER_EXTENDS_BIND variable # to "abstract-no-bind", however it won't bind the host directory inside the container. # It means that you need to work directly within the container using a tool # like the VScode dev-container of the remote-extension suite -DOCKER_EXTENDS_BIND=abstract-bind +DOCKER_EXTENDS_BIND= diff --git a/docker-compose.yml b/docker-compose.yml index 16ade324fd..3102b4cd8a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -27,11 +27,11 @@ services: # we cannot use /env/dist to avoid permission issues - ac-env:/azerothcore/env # expose some dist folder outside allowing the host to use them - - ${DOCKER_CONF:-./conf}:/azerothcore/conf - - ${DOCKER_ETC:-./env/docker/etc}:/azerothcore/env/dist/etc + - ${DOCKER_VOL_CONF:-./conf}:/azerothcore/conf + - ${DOCKER_VOL_ETC:-./env/docker/etc}:/azerothcore/env/dist/etc # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544 - - ${DOCKER_LOGS:-./env/docker/logs}:/azerothcore/env/dist/logs:delegated - - ${DOCKER_DATA:-./env/docker/data}:/azerothcore/env/dist/data:delegated + - ${DOCKER_VOL_LOGS:-./env/docker/logs}:/azerothcore/env/dist/logs:delegated + - ${DOCKER_VOL_DATA:-./env/docker/data}:/azerothcore/env/dist/data:delegated profiles: [abstract-service] # do not run this abstract-no-bind: @@ -63,9 +63,9 @@ services: target: /var/lib/mysql healthcheck: test: "/usr/bin/mysql --user=root --password=$$MYSQL_ROOT_PASSWORD --execute \"SHOW DATABASES;\"" - interval: 2s - timeout: 20s - retries: 10 + interval: 5s + timeout: 10s + retries: 40 ac-worldserver: @@ -78,11 +78,19 @@ services: restart: unless-stopped env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} + user: ${DOCKER_USER:-acore} privileged: true build: context: . - target: ${DOCKER_BUILD_WORLD_TARGET:-dev} + target: ${DOCKER_BUILD_WORLD_TARGET:-worldserver-local} dockerfile: ./apps/docker/Dockerfile + args: + USER_ID: ${DOCKER_USER_ID:-1000} + GROUP_ID: ${DOCKER_GROUP_ID:-1000} + DOCKER_USER: ${DOCKER_USER:-acore} + cache_from: + - acore/authserver:${DOCKER_IMAGE_TAG:-master} + - acore/dev-server:${DOCKER_IMAGE_TAG:-master} ports: - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878 @@ -97,10 +105,18 @@ services: restart: unless-stopped env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} + user: ${DOCKER_USER:-acore} build: context: . - target: ${DOCKER_BUILD_AUTH_TARGET:-dev} + target: ${DOCKER_BUILD_AUTH_TARGET:-authserver-local} dockerfile: ./apps/docker/Dockerfile + args: + USER_ID: ${DOCKER_USER_ID:-1000} + GROUP_ID: ${DOCKER_GROUP_ID:-1000} + DOCKER_USER: ${DOCKER_USER:-acore} + cache_from: + - acore/worldserver:${DOCKER_IMAGE_TAG:-master} + - acore/dev-server:${DOCKER_IMAGE_TAG:-master} ports: - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724 profiles: [all, app, authserver] @@ -110,13 +126,10 @@ services: # Dev services # #====================== - - ac-dev-server: + ac-build: <<: *ac-shared-conf - tty: true + extends: ${DOCKER_EXTENDS_BIND:-abstract-bind} image: acore/dev-server:${DOCKER_IMAGE_TAG:-master} - security_opt: - - seccomp:unconfined build: context: . target: dev @@ -124,9 +137,40 @@ services: args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} - extends: ${DOCKER_EXTENDS_BIND:-abstract-bind} + DOCKER_USER: ${DOCKER_USER:-acore} + cache_from: + - acore/dev-server:${DOCKER_IMAGE_TAG:-master} env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} + working_dir: /azerothcore/ + volumes: + - ac-build:/azerothcore/var/build + # use internal copied files instead of volumes + - /azerothcore/src + - /azerothcore/data + - /azerothcore/modules + profiles: [all, build] + + ac-dev-server: + <<: *ac-shared-conf + extends: ${DOCKER_EXTENDS_BIND:-abstract-bind} + tty: true + image: acore/dev-server:${DOCKER_IMAGE_TAG:-master} + build: + context: . + target: dev + dockerfile: ./apps/docker/Dockerfile + args: + USER_ID: ${DOCKER_USER_ID:-1000} + GROUP_ID: ${DOCKER_GROUP_ID:-1000} + DOCKER_USER: ${DOCKER_USER:-acore} + cache_from: + - acore/dev-server:${DOCKER_IMAGE_TAG:-master} + security_opt: + - seccomp:unconfined + env_file: + ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} + user: ${DOCKER_USER:-acore} environment: DBLIST: AUTH,CHARACTERS,WORLD ports: @@ -134,14 +178,24 @@ services: - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878 volumes: - - ac-build:/azerothcore/var/build + - ac-build-dev:/azerothcore/var/build profiles: [all, dev] + depends_on: + ac-database: + condition: service_healthy volumes: ac-database: ac-env: + ac-build-dev: ac-build: ac-proj: + # not used, but you can use them by setting + # the DOCKER_VOL_* env variabiles + ac-conf: + ac-etc: + ac-logs: + ac-client-data: networks: ac-network: From 383f55cf855035ac1d111b34452701ae35c866be Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 28 Apr 2021 22:07:49 +0000 Subject: [PATCH 2/8] chore(DB): import pending SQL update file Referenced commit(s): e4fafc61dd966b6077f4cd575c575473f0643d88 --- deps/acelite/ace/ace_message_table.bin | Bin 28 -> 27 bytes deps/acore/mysql-tools/.gitignore | 26 ++--- deps/acore/mysql-tools/bin/mysql.exe | Bin 4094976 -> 4094922 bytes deps/acore/mysql-tools/bin/mysqldump.exe | Bin 4079104 -> 4079050 bytes deps/acore/mysql-tools/bin/mysqlimport.exe | Bin 4013056 -> 4013003 bytes deps/acore/mysql-tools/mysql-config.dist | 124 ++++++++++----------- 6 files changed, 75 insertions(+), 75 deletions(-) diff --git a/deps/acelite/ace/ace_message_table.bin b/deps/acelite/ace/ace_message_table.bin index 6ac08e5dc692359adc1156f251c77ed9420d8e72..f70e610b110b2ceb0c47152a0d1c731483d6e900 100644 GIT binary patch delta 10 Pcmb14`#Q+2V2Y&$V delta 11 Qcmb1^nIOi-%f$c$00_1K`v3p{ diff --git a/deps/acore/mysql-tools/.gitignore b/deps/acore/mysql-tools/.gitignore index c6659cf0c1..fa1ea4671a 100644 --- a/deps/acore/mysql-tools/.gitignore +++ b/deps/acore/mysql-tools/.gitignore @@ -1,13 +1,13 @@ -/mysql_config -mysql_tools_(for usr-local-bin) - -# -# Editors / debuggers / other output files -# -*~ -*.bak -*.orig -*.patch -callgrind.out.* - -.upt.json +/mysql_config +mysql_tools_(for usr-local-bin) + +# +# Editors / debuggers / other output files +# +*~ +*.bak +*.orig +*.patch +callgrind.out.* + +.upt.json diff --git a/deps/acore/mysql-tools/bin/mysql.exe b/deps/acore/mysql-tools/bin/mysql.exe index 66267a989aebc4c1366e5e5d10fb5bf078cbfcd7..7d3f690c4fca255b9e23fe4dec3458c0f46ff003 100644 GIT binary patch delta 796 zcmY+=&rcIU6bJAv{s7hvN=2ke`wnTH8C|<2<7BKy3!FgDO=obsd6xS zXv&3XdT^a;%-jenMkE=367fyi@^|kze#FNvjNA<1X=nM`O$%l83kCfN&48mE#k5lN$klM zxjVU6B=V!ejhR_NE$D)xD!L-)l~tOvZUa%=mQ?wEo(g)wb}uYadAT(hg8~t2(DerC z;SZ8wE4lh#a-6+t5KpIBWHyGZns4?RDaLjiL>SqBNV0aIkCy4YPIIlvwy(f5QiR>! zCfiyD=4LQd9Yo?~yeNo{|y7&8YCwDaZ`Vzjk|OV$=jOH|d1d)tWt_OeO5 z)r}^BE@Pv4{PT3R;ywZ0;DVFT1E-)DPD3BK;S8LGbKrsV&<_G!fQv8yUZdjnIlGM7 zpl>%@U0?ITB^ZRua0P~77)D?e#=s9ENDzP^gkT)P5P>Mf;3`~$xUs&LcpYOy^+aTt z7jWW5I$zQh{c*AtBB9ZTC0fK+PixAGlBWx_m}JlEi8=POp78WrU4DC8+^=h;qMlM8 M6q3f+X5#C|zp6_81ONa4 delta 830 zcmY+?&2Q3h7zgln&X)lX%ESrEv`*#}w^3fki&B!sC5B{f26mazAz__1VTF`-Q40XP7Ia1ai`VK@RqU<13gqB{P*;>o%_Lax_ovT@wf{9-OA$eLEx z*pka-7OwX#xw*v~vzdkd2*+h(VkAoD%a63>>}w=;xx>6`9kL1vZ7!YS< zhYBTFK|_@vROF&AuL}3&LZ$!pupCSmXpz4+SZH@Jk6CGveGtXSeB7cf`(AqyeLC&M zHra;|MHLaJW-)g`yJxJ+s$Tt{jTc*LlOG?x)@Gbmt$pYuW6b4{GOWUEhC|1SV+EK9}wPpAQ1(HS+gHdWqyQmvQxHOZ%Oq~ymu1s98 zqlV4>1FoC6n#A}EOuA_)>|AxN8yAfd<2yj1H+dH4z2}^JKXgy5-~XOiKh?gxZFoQ0 zeRaFf3N|+lz7*%f{2Se4eL@A}gpY`E2g-sIoj- zd$yX*4TJTV5RS0&0clQ|%{XQfX7)q!a{`H3h1kDC;y-&IWU&@`u{gLFxMlv~`UWq_ z8ZSzsCKf8h7#;+i_CGo?bsHIo7-ktw?$l|FlL5s7CIs`!mu-ny*s)>`I@L` zdZEIXb*ZR{vcwk)m5SMB?u+zCn;4Cpjs}w$)uqDg3gtDKmv<;;WJ#4#muO8a(qU(U z{Wv1-;ZK5bW@{7As2=?6Nt-xqoP}+*Npo`Ww24OWanAgVkmx0@g0ihwsidi= zogtR%5Kmq05STX9j&qCD_m7=$0WN|IF2M|3hAVIt+;9zM;X2I0Jluc<;Nd3Rg4@Ra zvFEeXP=0&@4zB>!3TH24@+KTH!*90%|o1(bsy1+0M3>H&wG2=v<0Ka?JXsDUN|357uu6{6K#B5iWLlE6gb zz+@#1zL~^GDs}$%rZ)MgxKy1~dZpIg>V6k9jK& z5sR7RZN9Fz%5i(#Y@}A{pCI<#B*B(o=m~CbOEC1@B+-^&UfUTB)T1%6&>8LhA0eaR zPi!?|3ln8@v%ZCUP5YEvPo?$j&0S=CC9y;zM>}&RORF(ga=jv~_b*(~2JO%R_rMMJ zp%c2G8y-Lp^nwSx@DLt>0DaI81IGS^_``+2|KgAMcNH_HR|erR41oksU>Kgl2#mrQ z_&^3f1Rx0G5P~p7APN%@gGq=R(<{nxlp}WeRf)6{FW`x1Q}1({s&7sao5?F4?7qn> i@9;X#E8hOEfLL diff --git a/deps/acore/mysql-tools/bin/mysqlimport.exe b/deps/acore/mysql-tools/bin/mysqlimport.exe index 8dc3613870c49802ceec3cd8f14c3ec31b3521a6..164dd2762c25688df6da49440f237a053bd793a4 100644 GIT binary patch delta 772 zcmYk&O-~a+7zgmyH((t=D=NNJR$EaErMugA-P9OOOj86yIeD=w9brvval2*IlO8rr zyl6~qrVV-$r{!iw`&mHgQA3NSRYcH9_ zycXMMvHcc1V6lT1J7lo|iw#^%AG z-0lB6&#n18H?niR!a_od#&~9ntP`gh%c(^9_bt*KM8(-D{L3~O=glVZ^*70Uq($z{ z?lwt6SiHHgD3&XxsF!t9*Gl?xT69m96i#bp?Lmo(W~J|3T%p=(HyA-m(hb^dkujlH zOt?j%-CvCJP@DLNoF?aD%-Dl(^|JEkK zUbO5+51T6n)rw+KGd01(aE zOEp6`pJlpR6b$;LMyvSdyN14|m*_IBX87xddY`u%s(-@073sgGMogntHM8Z1m5e>} IR^5F659AF1@Bjb+ delta 809 zcmY+COHUI~6vsP0P|CfnV%4gkQ>ZTl`lO{esWFvV3Tu4FOS ztzk2Dlj1=|yFQ zTU@gE9*gg__&$s8w|Jk$4_N%5#rrMpw)ntXPQIokTFYD^@88T&x68F~b1s{enPC(S zCv;^qvp0G|*Y&wuS2MHS%zPpoi&HzfMpiwo2JCTiF=~HXBkOJ_=fqKJf3Fk2{bQXB z?kbE>TdI@0V>^Xm>Yk9V%`eD$(Udh^Gc~oKJ!SdMd32iED|IqN+QU#fn(Rn_suN#N zI?+mx$Ge47j&z9|Os;5#$<>0q$n~756?HkM77DFGM-cDR@_MJyD;P;pyVxKy8pJy~ zmx@d~f?Q{hODt!yyu8HJQg=1&8g%!eL4sXlk+w0v*IY7~nwRscsiGvcJx#JYuwx>O z(;O2%rlZ-S{*dV=p5fFmZlGoFXOr}I>v6%`O%jyo^S}nF1vY4A8~>N<9>j|rLJlK? z$PvVc97T>H#}Pkr0y&ACLWYoGyk&ys0Qd_Q%zVhOu>H9bO7bGemDB!Gsa{|r_ zxFF!7fH47=1dI!q5HKkqBp@sxA|NUtCLk_gN Date: Thu, 29 Apr 2021 00:19:32 +0200 Subject: [PATCH 3/8] fix(doc): cleanup outdated documentation in ScriptMgr.h (#5488) * Update ScriptMgr.h * Update ScriptMgr.h --- src/server/game/Scripting/ScriptMgr.h | 67 +-------------------------- 1 file changed, 1 insertion(+), 66 deletions(-) diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 869d77f9b8..bc4b1391b6 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -72,6 +72,7 @@ struct TargetInfo; #define VISIBLE_RANGE 166.0f //MAX visible range (size of grid) +// Check out our guide on how to create new hooks in our wiki! https://www.azerothcore.org/wiki/hooks-script /* TODO: Add more script type classes. @@ -81,72 +82,6 @@ struct TargetInfo; */ -/* - Standard procedure when adding new script type classes: - - First of all, define the actual class, and have it inherit from ScriptObject, like so: - - class MyScriptType : public ScriptObject - { - uint32 _someId; - - private: - - void RegisterSelf(); - - protected: - - MyScriptType(const char* name, uint32 someId) - : ScriptObject(name), _someId(someId) - { - ScriptRegistry::AddScript(this); - } - - public: - - // If a virtual function in your script type class is not necessarily - // required to be overridden, just declare it virtual with an empty - // body. If, on the other hand, it's logical only to override it (i.e. - // if it's the only method in the class), make it pure virtual, by adding - // = 0 to it. - virtual void OnSomeEvent(uint32 someArg1, std::string& someArg2) { } - - // This is a pure virtual function: - virtual void OnAnotherEvent(uint32 someArg) = 0; - } - - Next, you need to add a specialization for ScriptRegistry. Put this in the bottom of - ScriptMgr.cpp: - - template class ScriptRegistry; - - Now, add a cleanup routine in ScriptMgr::~ScriptMgr: - - SCR_CLEAR(MyScriptType); - - Now your script type is good to go with the script system. What you need to do now - is add functions to ScriptMgr that can be called from the core to actually trigger - certain events. For example, in ScriptMgr.h: - - void OnSomeEvent(uint32 someArg1, std::string& someArg2); - void OnAnotherEvent(uint32 someArg); - - In ScriptMgr.cpp: - - void ScriptMgr::OnSomeEvent(uint32 someArg1, std::string& someArg2) - { - FOREACH_SCRIPT(MyScriptType)->OnSomeEvent(someArg1, someArg2); - } - - void ScriptMgr::OnAnotherEvent(uint32 someArg) - { - FOREACH_SCRIPT(MyScriptType)->OnAnotherEvent(someArg1, someArg2); - } - - Now you simply call these two functions from anywhere in the core to trigger the - event on all registered scripts of that type. -*/ - class ScriptObject { friend class ScriptMgr; From d2dad6f2f562c3c94005b647de2e454fee9a0811 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 29 Apr 2021 01:12:53 +0000 Subject: [PATCH 4/8] chore(DB): import pending SQL update file Referenced commit(s): 545a82870e152045a428be5c2d5e423b0145ca91 --- deps/acore/mysql-tools/bin/mysql.exe | Bin 4094922 -> 4094921 bytes deps/acore/mysql-tools/bin/mysqldump.exe | Bin 4079050 -> 4079048 bytes deps/acore/mysql-tools/bin/mysqlimport.exe | Bin 4013003 -> 4013002 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/deps/acore/mysql-tools/bin/mysql.exe b/deps/acore/mysql-tools/bin/mysql.exe index 7d3f690c4fca255b9e23fe4dec3458c0f46ff003..cb9a717c8923ffe56c1ef0a2285389281cc125d1 100644 GIT binary patch delta 200 zcmWN=w^0HB06@_r2SJjkLkA~mT?Lz>c(wshoG oy3&)r4CGCQGLm=skg-f;Dl?hOLYA_UPx+FyY-B6nf9!tt7iPpvs{jB1 diff --git a/deps/acore/mysql-tools/bin/mysqldump.exe b/deps/acore/mysql-tools/bin/mysqldump.exe index 03cf29c5e48b535ad32731d1a4999eb4b06584d6..9c170e3634837bc80fc21af705ca13ece4864ce4 100644 GIT binary patch delta 267 zcmWm8%ThrB007XTOQi@QMe>Mym3L1mf0Z9-VP&RYvFZ;@(-)bs=~$fo`P*${zkGkL z7pw3qh?YSVBhCQ<36dOg#4#yOI3-PnGqU8!b54OGB`zp)$rTlsG~jCtXeHzvIE!6#E@e<7Ox7k3dLJYfI; diff --git a/deps/acore/mysql-tools/bin/mysqlimport.exe b/deps/acore/mysql-tools/bin/mysqlimport.exe index 164dd2762c25688df6da49440f237a053bd793a4..36b5a9fdca9a8a7ab31815f8be0265bb8e3adabc 100644 GIT binary patch delta 197 zcmWN=$4vqN06@{un>1-EC{=p1(#K#F{@ugBvy4l?IwV}-CGUK_1WxzI!ygimpoAnW z5s6An;*yZ0q~t-;l98;D ip^RiK6Pe0P=JFw*@+IH$BfqkcrL1Hv8`=J|+iz}r)k|Ce delta 199 zcmWN=$5BE706@X{3P_L~L~_ocWDqRFQeFWb-koM_0^4DRtM1HR@3-Lh|Aip=jRf)_ zj}nrwMC3`L5|g+j=zaL5fn67b(lDRHQ03sY^qe(vr4xq$@q?%Rq)Q llCex=Dl?hOLf+(Ema>wyY-B4t*~>wW@*yWV|M2;B`U895ODq5Y From 2723a8a782412fc48199a30b34dd13d79b4a3775 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 29 Apr 2021 02:40:19 +0000 Subject: [PATCH 5/8] chore(DB): import pending SQL update file Referenced commit(s): d2dad6f2f562c3c94005b647de2e454fee9a0811 --- deps/acore/mysql-tools/bin/mysqldump.exe | Bin 4079048 -> 4079047 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/deps/acore/mysql-tools/bin/mysqldump.exe b/deps/acore/mysql-tools/bin/mysqldump.exe index 9c170e3634837bc80fc21af705ca13ece4864ce4..bb0f62357d71031182a6ca2d39a4afb29aebf899 100644 GIT binary patch delta 264 zcmWm8$u@#v007YQe+^1SAq`4J@tGQ^G~neddYyLO0FUGxn{JD{zrX)~$q(BkeulUS zF(Hs5O@=H7 e?vj5|74sRgFIm`e6 From b9ec3d5123f880b82cc729f01f7b1763342595bb Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 29 Apr 2021 02:44:28 +0000 Subject: [PATCH 6/8] chore(DB): import pending SQL update file Referenced commit(s): 2723a8a782412fc48199a30b34dd13d79b4a3775 --- deps/acore/mysql-tools/bin/mysqldump.exe | Bin 4079047 -> 4079046 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/deps/acore/mysql-tools/bin/mysqldump.exe b/deps/acore/mysql-tools/bin/mysqldump.exe index bb0f62357d71031182a6ca2d39a4afb29aebf899..bc56bbaa7f225e72b2dc136c7cd2ea2312dacb45 100644 GIT binary patch delta 263 zcmWm8TUJ3)007W+A|WbtLm~1yQc2N6G`T*ShFLU&Yf7!vPus`--@Cuxkg|P32;e3i5*$;lg;5Q5+ zM2Qh6!4*kTq{)!wnj3D(k*B~NMeZq4rb3kmYSek8L6aw1wCT{LN1tadw*f<581c#* cV Date: Thu, 29 Apr 2021 02:50:45 +0000 Subject: [PATCH 7/8] chore(DB): import pending SQL update file Referenced commit(s): b9ec3d5123f880b82cc729f01f7b1763342595bb --- deps/acore/mysql-tools/bin/mysqldump.exe | Bin 4079046 -> 4079045 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/deps/acore/mysql-tools/bin/mysqldump.exe b/deps/acore/mysql-tools/bin/mysqldump.exe index bc56bbaa7f225e72b2dc136c7cd2ea2312dacb45..7b545543f77779cc0f62449902a611dd75364750 100644 GIT binary patch delta 201 zcmWN~$yR{@0D#dWB2ttgWUl<5d7cUnXYoCcRd2vEImZHvyS}H(Idr@`T!TFlk_QP( zL>?t7F?o`>B;;9=@*=O2lC-?ZyJRFQImye16r?C6`INF$q$)M3OGBFSCExNREeYiQ lwxuIo=}BJ(GL(^wWg=6V$y^q)l$EUISN>!p+kbYa+zs1pI>Z0~ delta 266 zcmWm8H&Oxt06@_p3K9fK5+vgi1XPj%y_^NtvGW9SCTA#?NAc#j|L^o4Ir0+*k=%C} z9F! Date: Thu, 29 Apr 2021 01:31:17 -0700 Subject: [PATCH 8/8] fix(BASH): cp docker configs (#5536) * fix(BASH): cp docker configs * fix(DOCKER): typo --- apps/docker/Dockerfile | 2 +- bin/acore-docker-build | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/docker/Dockerfile b/apps/docker/Dockerfile index 6f55fbc99e..863d7ba51a 100644 --- a/apps/docker/Dockerfile +++ b/apps/docker/Dockerfile @@ -182,7 +182,7 @@ COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/au # with binaries and data included # #================================================================= -FROM authserver-local as worldserver +FROM worldserver-local as worldserver LABEL description="AC Production ready worldserver" diff --git a/bin/acore-docker-build b/bin/acore-docker-build index d7cc6e244e..efe890d445 100755 --- a/bin/acore-docker-build +++ b/bin/acore-docker-build @@ -5,8 +5,8 @@ cd /azerothcore bash acore.sh compiler build echo "Generating confs..." -cp -n "env/docker/etc/worldserver.conf.dockerdist" "env/dist/etc/worldserver.conf" -cp -n "env/docker/etc/authserver.conf.dockerdist" "env/dist/etc/authserver.conf" +cp -n "env/dist/etc/worldserver.conf.dockerdist" "env/dist/etc/worldserver.conf" +cp -n "env/dist/etc/authserver.conf.dockerdist" "env/dist/etc/authserver.conf" echo "Fixing EOL..." # using -n (new file mode) should also fix the issue