• Stars
    star
    198
  • Rank 196,898 (Top 4 %)
  • Language
    TypeScript
  • License
    GNU Affero Genera...
  • Created over 3 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

docker-compose example to run an azerothcore platform

ACore docker compose

logo

  • Table of Contents {:toc}

Video Demo:

ACore Docker Demonstration

The docker compose file included in this folder provides an easy way to use the azerothcore images available on docker hub . It means that you will be able to run a clean azerothcore server without installing anything but docker.

NOTE: You can re-use this docker compose configuration inside another project to test AzerothCore together with another application, for instance an API or a website based on docker compose.

The original repository with the sources and the workflows to generate the images used by this docker compose is available here

Do you have any questions? Open an issue here

Requirements

Getting started

First of all, download or clone this repository. If you want to clone the repo you have to open a terminal and run this command: git clone https://github.com/azerothcore/acore-docker

To open a terminal inside a specific folder in your operating system check this interesting article

Now run this magic command sequence inside the downloaded folder to have everything up and running (with an interactive worldserver terminal):

docker compose up

Wait for few minutes and you have an up and running AzerothCore!

The first installation will take a while because it needs to download the images from the docker hub and create the entire database before running the server**

โš ๏ธ WARNING โš ๏ธ: if you encounter the error ERROR: for ac-worldserver Container "abcdefg12345" exited with code 1. or ERROR: 'network_mode' and 'networks' cannot be combined please update docker and docker-compose to the latest version.

How to run in background

If you need to run them in background instead you can use the following command:

docker compose up -d

IMPORTANT:

  • If the application crashes, docker will automatically restart the container for you

Access the worlserver console and create an account

With docker compose up we have an up and running worldserver as well, but you need to access its interactive shell to run commands on the worldserver.

Open another terminal and use this command to access the worldserver console

docker attach acore-docker-ac-worldserver-1

Now you can use the worlserver console to run azerothcore commands.

To create an account you can use: account create <user> <password> <confirm password>

NOTE: you can detach from a container and leave it running using the CTRL-p CTRL-q key sequence.

The list of GM commands is available here

Do you need a game client? check this page!

IMPORTANT to read the list of all the containers you can attach to, run the docker ps command.

Ask for support

If you need support about the docker installation, use one of the following channels:

If your issue is about the server or you want to report a bug, check our page on How to ask for help

Stop or restart the services

There are several commands to stop or restart the services, depending on your needs:

  • docker compose ps: list all the running containers
  • docker compose stop : just stops the current running services
  • docker compose restart : restarts the current running services
  • docker compose down --remove-orphans : stops and removes the containers.
  • docker compose down --rmi all -v --remove-orphans : โš ๏ธ stops, removes, and deletes EVERYTHING. Including the volumes with the associated database โš ๏ธ

Update your services with latest images

You just need to combine the following commands:

docker compose down
docker compose pull
docker compose rm -s -v -f ac-client-data

NOTE: docker compose rm -s -v -f ac-client-data is used to recreate the client data volume with the newest files. If you're using your own maps, you should not use this command and regenerate the maps by your own instead (read the paragraph below)

Dev server

The ac-dev-server is a special container that provides a complete workspace that includes all the sources and dependencies to build your own server. The container of the ac-dev-server is an isolated instance, it doesn't expose any file with the host and all the changes are stored into a docker volume. This image is intended to be used together with the VSCode Docker extension.

The quickest way to access and work with the ac-dev-server is the following:

  1. Run this command to stop all the containers: docker compose down

  2. Install visual studio code and the Remote Development extension

  3. Start VS Code in the acore-docker folder, run the Dev Containers: Reopen in container... command from the Command Palette (F1) or quick actions Status bar item (green button on the bottom left of your screen)

    Screen

  4. Once inside the container open a vscode terminal and run this command

       git config --global --add safe.directory '*' && git reset --hard && git pull origin master

    You will notice that the file list available in VSCode is basically the azerothcore-wotlk repository.

  5. Now you can start working with the azerothcore sources into a pre-configured ubuntu environment with all the dependencies pre-installed

  6. To build and run your server run ./acore.sh compiler build command. You can refer to this guide at the paragraph "Build everything from scratch".

  7. Once it's done you can download the client data by executing this command: ./acore.sh client data

  8. Finally you should be ready to run the authserver and the worldserver available inside the env/dist/bin folder. You can also use the restarters available in the ./acore.sh dashboard

IMPORTANT:

  • This container uses a different instance of the mysql database. It means that you won't have, by default, the same data available on the ac-authserver and ac-worldserver services

  • The dev-server docker compose exposes the following ports: 3724 (authserver), 8085 (worldserver), 7878 (soap service)

  • To share files between your host and the dev-server you can use the var/shared folder

  • This dev-container includes all the tools needed to build the AC without configure anything. Look around and play with the vscode workspace to discover all the features available.

  • if you have any file permission issues once inside the container, please run this command: sudo chown acore:acore -R .

Customize your server

NOTE: to unlock 100% power of AzerothCore, please use the main repo and compile it by your self!

Despite using the GM commands to operate within the CLI or in game, you have the flexibility to extend/configure your server with the following techniques:

Change your docker configurations with the environment variables

Within the /conf/dist folder you can find a sample of the .env file which you can copy inside the root folder of this project to change certain docker compose configurations, such as changing the ports of your docker services or the volumes path etc.

Check the comments inside that file to understand how to use those variables.

Extends the default docker compose

With the combination of the docker compose.override and the environment variables available to configure the AzerothCore project, you can extend this docker by adding external and shared volumes, change configurations and even add multiple realms.

How to create a second multirealm environment

Check the /conf/dist folder that contains an override file ready to be used to implement a secondary worldserver. Just copy-paste this file in the same folder of the docker-compose.yml

You also need to create a worldserver2.conf file under the conf/ folder. You can do that by running this command:

docker compose cp ac-worldserver:/azerothcore/env/dist/etc/worldserver.conf conf/worldserver2.conf

Create the following configurations inside the worldserver2.conf:

RealmID = 2
LoginDatabaseInfo     = "ac-database;3306;root;password;acore_auth"
WorldDatabaseInfo     = "ac-database;3306;root;password;acore_world2"
CharacterDatabaseInfo = "ac-database;3306;root;password;acore_characters2"

Finally you need to access your database and change the acore_auth.realmlist table by adding a second realm with the port 8086

Now you can restart your containers by running:

docker compose down
docker compose up

Changing your server configurations

To change the *.conf files of your server you need to extract them from the container and then create a volume to re-inject the modified file into the container again.

To do this you can use these commands to copy the files from the container to your conf folder:

docker compose cp ac-worldserver:/azerothcore/env/dist/etc/authserver.conf conf
docker compose cp ac-worldserver:/azerothcore/env/dist/etc/worldserver.conf conf
docker compose cp ac-worldserver:/azerothcore/env/dist/etc/dbimport.conf conf

then create a docker-compose.override.yml file in the same folder of the docker-compose.yml file and add this configurations:

version: '3.9'

services:
  ac-worldserver:
    volumes:
      - ./conf/worldserver.conf:/azerothcore/env/dist/etc/worldserver.conf
      - ./conf/authserver.conf:/azerothcore/env/dist/etc/authserver.conf
      - ./conf/dbimport.conf:/azerothcore/env/dist/etc/dbimport.conf

In this way you can inject the 3 extracted files from your host into the container

Now you can change the configurations as you wish and restart the server.

You can find the list of all the configurations available in these files:

  1. worldserver.conf
  2. authserver.conf

Customize your server with the database

The database service available within the docker compose expose a mysql port that can be accessed by any mysql client However, our docker compose also provides a pre-configured phpmyadmin container that can be used to access the database.

What you need to do is the following:

  1. docker compose up phpmyadmin to startup the phpmyadmin container
  2. connect to https://127.0.0.1:8080 (unless you changed the port)
  3. insert the db credentials. By default: ac-database (host), root (user), password (password)

You are ready to go!

Check the AzerothCore wiki to learn how to work with the AC database

Customize your server with Lua scripts

The worldserver container included in our docker compose integrates the Eluna module

You just need to install your lua scripts inside the /scripts/lua folder and you are ready to go!

Check the Eluna documentation to learn how to work with this system

Customize your server with TypeScript

This project also integrates the Eluna-TS system which allows you to create your custom scripts in Typescript!

What you need is just create an "index.ts" within the /scripts/typescript folder and you can directly start by writing your scripts there or creating other files to import.

Inside our docker compose.yml there's the ac-eluna-ts-dev service which check changes on /scripts/typescript folder to automatically recompile your TS files into Lua.

Disclaimer: Eluna-TS is based on TypeScriptToLua which is a Typescript limited environment. You cannot use all the Typescript features, check their page for more info.

Extract client data by your self with the ac-dev-tools container

Within your .env file set this variable: DOCKER_CLIENT_DATA_FOLDER= with the absolute path of the "Data" folder of your game client.

Now run this command: docker compose run --rm --no-deps ac-dev-tools bash to access the shell of the ac-dev-tools container. Once inside you can run the following commands:

  • ./map_extractor -> to extract dbc, Cameras and maps
  • ./vmap4_extractor && ./vmap4_assembler -> to extract and assemble the vertical maps
  • ./mmaps_generator -> to extract and generate the movement maps

After the extraction (it can take hours) the file will be available inside the ac-client-data-* volumes.

More Repositories

1

azerothcore-wotlk

Complete Open Source and Modular solution for MMO
C++
4,391
star
2

Keira3

Cross-platform Database Editor for AzerothCore
TypeScript
339
star
3

mod-transmog

Plug&Play transmog module for AzerothCore, based on Rochet2 works
C++
114
star
4

wiki

AzerothCore wiki based on Drassil Git-Wiki
CSS
91
star
5

mod-autobalance

Module for AzerothCore(MaNGOS -> TrinityCore -> SunwellCore)
C++
90
star
6

mod-progression-system

ChromieCraft Progression System
C++
56
star
7

telegram-automated-db-backup

Python script to automated the db backup using Telegram as cloud storage
Python
54
star
8

acore-cms

ACore CMS based on wordpress
PHP
46
star
9

acore-api

RESTful APIs for AzerothCore.
TypeScript
41
star
10

mod-aoe-loot

Loot all bodies at once!
C++
26
star
11

skeleton-module

This is a template, a skeleton of a module to use as a base for your new modules.
C++
26
star
12

eluna-ts

Eluna-TS converts TS files to Lua scripts compatible with the Eluna system
TypeScript
24
star
13

mod-npc-enchanter

Creates an NPC that enchants the player's gear
C++
23
star
14

mod-duel-reset

Duel reset module for AzerothCore
C++
18
star
15

mod-azerothshard

This module is a collection of custom features that have been implemented privately on AzerothShard project.
C++
18
star
16

mod-zone-difficulty

Support module for mod-progression-system, handles nerfs and debuffs per zone.
C++
18
star
17

acore-client

Web client to consume azerothcore opcodes
JavaScript
16
star
18

server-status

AzerothCore Server status
TypeScript
16
star
19

web-character-migration-tool

Character migration tool
PHP
15
star
20

mod-npc-buffer

A NPC that buffs players
C++
15
star
21

portals-in-all-capitals

SQL script to add portals in every capital
15
star
22

mod-npc-services

AzerothCore Module
C++
15
star
23

forum

Old forum, now ARCHIVED
13
star
24

mod-congrats-on-level

This module rewards players when they reach specific levels
C++
13
star
25

mod-arac

Module & pacthes - "All Classes All Races (ARAC)"
12
star
26

mod-pvp-titles

Display old PVP titles depending on honorable kills (starts at 50)
C++
12
star
27

mod-weapon-visual

AzerothCore Module
C++
12
star
28

tool-tc-migration

[EXPERIMENTAL] Some tools to migrate characters database from TrinityCore to AzerothCore.
Shell
12
star
29

mod-npc-beastmaster

An NPC that lets you tame beasts.
C++
11
star
30

wowlauncher-delphi

An old Launcher written in DELPHI/PASCAL for wow 3.x.x , 2.x.x , 1.x.x
Pascal
11
star
31

mod-rdf-expansion

Allows to join RDF of previous expansions on a higher character level
C++
10
star
32

mod-guild-zone-system

AzerothCore Module
C++
10
star
33

mod-morphsummon

Change appearance of summoned permanent creatures.
C++
10
star
34

universal-pwa

Boilerplate project to build an Universal Progressive Web App with ReactJS (CRA)
JavaScript
10
star
35

mod-npc-gambler

C++
9
star
36

mod-starter-guild

This module automatically joins new players to a guild of your choice on first login.
C++
8
star
37

mod-ip-tracker

C++
8
star
38

mod-bg-twinpeaks

Twin Peaks battleground in Wotlk3.3.5a as module for AzerothCore
8
star
39

wow-statistics

TypeScript
8
star
40

mod-new-character-perks

Perks on new char login
C++
7
star
41

mod-costumes

Temporary morph items module for AzerothCore
C++
7
star
42

mod-bg-reward

BGReward module for AzerothCore
C++
7
star
43

arena-stats

Arena Stats for AzerothCore
TypeScript
7
star
44

mod-money-for-kills

C++
7
star
45

mod-npc-all-mounts

Teaches all mounts
C++
6
star
46

noggit

Map creator
C++
6
star
47

classic-mode

SQL script to limit the player to the classic world (no TBC/WOTLK)
6
star
48

mod-npc-codebox

C++
6
star
49

mod-racial-trait-swap

Azerothcore Module for Racial Trait Swap
C++
6
star
50

mod-fireworks-on-level

Shoots fireworks in the air when a player reaches specified levels.
C++
5
star
51

mod-arena-tigerspeak

Tiger's Peak arena battleground in Wotlk 3.3.5a as module for AzerothCore
4
star
52

mod-pvp-zones

A module redefining world pvp.
C++
4
star
53

wp-azth-core-plg

AZerothCore Plugin for WordPress
PHP
4
star
54

acore-node-server

Official AzerothCore API Layer
JavaScript
4
star
55

mod-chat-transmitter

C++
4
star
56

mod-server-auto-shutdown

C++
4
star
57

lua-aio-modrate-exp

AIO experience modifier.
Lua
4
star
58

mod-tic-tac-toe

World of Warcraft Tic Tac Toe game
C++
4
star
59

pvp-vendors

Blizzlike-ish vendors to enhance the PvP experience
4
star
60

mod-buff-command

BuffCommand module for AzerothCore
C++
4
star
61

mod-bg-item-reward

Rewards players with items of your choice after battleground victories and defeats.
C++
4
star
62

mod-desertion-warnings

C++
4
star
63

mod-arena-tolviron

Tol'Viron arena battleground in Wotlk 3.3.5a as module for AzerothCore
4
star
64

catalogue

Catalogue of AC Modules, Tools, Scripts
HTML
4
star
65

azerothcore.org-website

AzerothCore.org website development repo
JavaScript
4
star
66

azerothcore.github.io

HTML
4
star
67

lua-command-plus

Command+ it's a script for create news command for AC.
Lua
3
star
68

docker-files

Shell
3
star
69

acore-php-framework

PHP
3
star
70

mod-queue-list-cache

C++
3
star
71

mod-premium-lib

A library module for all premium modules. Use it as a dependency.
C++
3
star
72

git-catalogue

TypeScript
3
star
73

mod-alpha-rewards

WIP reward system for AC ingame shop
C++
3
star
74

mod-npc-morph

AzerothCore Module
C++
2
star
75

world-boss-rank

World Boss Ranks - ranking list related to LUA - EventScripts
TypeScript
2
star
76

mod-chromie-xp

C++
2
star
77

reusable-workflows

Reusable workflows to be use with AzerothCore
2
star
78

database-wotlk

This repository contains the world database for wotlk 3.3.5a, to be used with search engine or other projects that needs it
2
star
79

universal-node

Boilerplate for Universal NodeJS server
JavaScript
2
star
80

mod-low-level-arena

C++
2
star
81

mod-pvpstats-announcer

C++
2
star
82

mysql-tools

extended mysql dump and import tool helping with data distrubution and versioning structure
Shell
2
star
83

wp-azth-cms

CMS for AZeroThCore based on Wordpress
PHP
2
star
84

mod-ip2nation

This module allows you to easily populate your ip2config & ip2nationcountries tables in the auth database
Shell
1
star
85

demoserver-tools

webpages and scripts for our demo server
1
star
86

.github

1
star
87

raid-browser

Lua
1
star
88

acore-core-build-action

1
star
89

mod-low-level-rbg

C++
1
star
90

mod-global-chat

New Worldserver Wide Chat Module for Azerothcore
C++
1
star
91

GitHub-Actions

TypeScript
1
star
92

mod-war-effort

C++
1
star
93

acore-pwa

Progressive Web App for acore-node-server
JavaScript
1
star
94

mod-cta-switch

Module for AzerothCore that switches a Call to Arms! PvP event with another of your choice.
C++
1
star
95

mod-dmf-switch

C++
1
star
96

CustomItemFix

Addon to fix custom item icons
Lua
1
star
97

arena-spectator

Lua
1
star
98

wp-azth-core-theme

AZeroThCore Theme for Wordpress
1
star
99

eluna-ts-mod-skeleton

Skeleton repo to be used as a boilerplate for your Eluna-TS modules
TypeScript
1
star
100

js-common

Common package to be included in every js module, service or application
JavaScript
1
star