Pages (Latest 10 updated) :
  1. Install with Docker
    1. Introduction
    2. Setup
      1. Software requirements
      2. Clone the AzerothCore repository
      3. Installation
      4. How to keep your AzerothCore updated with the latest changes
      5. How to run the worldserver with GDB
      6. How to use the dev-container
      7. How to create a second realm with docker compose
    3. More info
      1. Adding Modules
    4. FAQ
      1. Where are the etc and logs folders of my server?
      2. How can I change the docker containers configuration?
      3. How can I start, stop, create and destroy my containers?
      4. How to deal with the permission issues
      5. How can I delete my database files?
      6. Performance optimizations (for dev server)
      7. Memory usage
      8. Docker containers vs Virtual machines
      9. Docker reference & support requests

Install with Docker

Welcome to the AzerothCore Docker guide!


Installing AzerothCore using Docker is a simplified procedure that has several benefits:

  • It's very easy! Docker will do all the dirty work for you.
  • It can be done in all operating systems where Docker is available (including Windows, GNU/Linux, macOS)
  • You don't need to install many dependencies (forget about visual studio, cmake, mysql, etc.. they are NOT required)
  • Forget about platform-specific bugs. When using Docker, AzerothCore will always run in Linux-mode.
  • There are many other benefits when using Docker


Software requirements

The only requirements are git and Docker.

Old Operating Systems [not tested]:

Before going further, make sure you have docker and docker compose installed in your system by typing in a terminal:

docker --version
docker compose version

You should see a similar output:

Docker version 20.10.5, build 55c4c88
Docker Compose version 2.10.2

Note for Windows users: you can use git-bash (the shell included in git) as a terminal.

Clone the AzerothCore repository

You need to clone the AzerothCore repository (or use your own fork):

git clone

Now go into the main directory using cd azerothcore-wotlk. All commands will have to be run inside this folder.


Inside your terminal (if you use Windows, use git bash), run the following commands inside the azerothcore-wotlk folder

IMPORTANT: the following procedure uses our dashboard, however, these commands are a shortcut of the docker compose ones. you can check the docker compose commands used in background by running ./ docker --help and read the description of each command

1) Compile AzerothCore:

./ docker build

It will build docker images and compile the core automatically! This may take a while. Meanwhile you can go and drink a glass of wine :wine_glass:

NOTE For dev: if you are working with code and you need a fast way to compile your binaries, the command above can be a bit overkill for you because you probably do not need to rebuild images. Therefore, we suggest to use one of the following solution instead:

  • ./ docker dev:build it only builds the dev image and compiles the sources.

2) Download the client data:

./ docker client-data

IMPORTANT: This command should be executed only at the first installation and when there's a new version of the client-data available

3) Run the containers

./ docker start:app

Congratulations! Now you have an up and running azerothcore server! Continue to the next step to create an account

If you need to run this in background, you can use the following command to run the docker compose detached mode:

./ docker start:app:d

4) Access the worldserver console

Open a new terminal and run the following command

docker compose ps

find the name of worldserver

azerothcore-wotlk_ac-authserver_1    ./ run-authserver     Up   >3724/tcp,:::3724->3724/tcp
azerothcore-wotlk_ac-database_1 mysqld   Up (healthy)>3306/tcp,:::3306->3306/tcp, 33060/tcp
azerothcore-wotlk_ac-worldserver_1   ./ run-worldserver    Up   >7878/tcp,:::7878->7878/tcp,>8085/tcp,:::8085->8085/tcp

and then attach the worldserver. E.g.

docker attach azerothcore-wotlk_ac-worldserver_1

If you got error message the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'

This command will automatically attach your terminal to the worldserver console. Now you can run the account create <user> <password> command to create your first in-game account.

IMPORTANT: To detach: press ctr+p and ctrl+q. Do NOT try to detach using ctrl+c or you will kill your worldserver process!

5) Access database and update realmlist

To access your MySQL database we recommend clients like HeidiSQL (for Windows/Linux+Wine) or SequelPro (for macOS). Use root as user and as default host. The default password of the root DB user will be password.

Unless your server installation is on the same network as your client, you might want to update the realmlist address in the acore_auth database with your server public IP address :

USE acore_auth;
SELECT * FROM realmlist;

How to keep your AzerothCore updated with the latest changes

First of all, you just need to use the git tool to update your repository by running the following common command:

git pull origin master : this will download latest commits from the azerothcore repository

Then you can just run the following command:

./ docker build: to rebuild the images and generate new binaries.

NOTE: We do not update so often the client data, but when it happens you can run the following command:

./ docker client-data: it will download the new version of the client data if there's a new version available

How to run the worldserver with GDB

Running the server with GDB allows you to generate a crashdump if the server crashes. The crashdump file is useful for developers to understand which lines are failing and possibly fix it.

Keep in mind that you should compile your code with one of the following compilation types: Debug or RelWithDebInfo, otherwise GDB won't work properly

To enable GDB the steps are the following:

  1. Create a file under the /conf/ directory of the azerothcore-wotlk repository
  2. Add this configuration inside: AC_RESTARTER_WITHGDB=true. It will configure the restarter used by our docker services to use GDB instead of the binaries directly
  3. Restart your containers and that's it!

If the server crashes, you will find the crashdump file (gdb.txt) within the /env/docker folder

How to use the dev-container

Within our docker compose you can find the ac-dev-server service This service is used for our build and db operations, but it can also be used by you to develop with the VSCode Remote Docker extension

A dev-container lets you use a Docker container as a full-featured development environment. The .devcontainer folder in our project contains files to tell VS Code how to access (or create) a development container with all the needed tools. This container will run the AzerothCore with all the software and the configurations needed for working with our codebase and debugging the server.

Inside the azerothcore repo there's a pre-configured devcontainer.json that can be opened by using the VSCode command palette. To setup the Dev-Container follow these steps:

  1. install and open VSCode
  2. install the remote-container extension
  3. Open the azerothcore folder inside VSCode
  4. Open the VSCode command palette (Ctrl+Shift+P) and run: >Remote-Containers: Reopen in Container

IMPORTANT: The dev-container also contains a pre-configured debugger action that allows you to use breakpoints and debug your worldserver.

Do not forget that you need to Remote Container extension installed in your Visual Studio Code IDE

How to debug your code with the dev-container

NOTE: Keep in mind that you should compile your code with the Debug mode, otherwise the debugger won't work properly

Once inside the VSCode dev-container you can go to the debug session and use the Linux/Docker debug action as you can see in this image:


It will run a worldserver in debug mode and then you can start placing breakpoints in your code to debug it.


For more info about how to debug in vscode you can refer to the official guide

How to create a second realm with docker compose

To create a second realm we suggest you to take a look at the example available within the repository.

More info

Adding Modules

To add a module simply place the module directory inside of the /azerothcore-wotlk/modules directory.

After adding a module you'll have to rebuild azerothcore:

./ docker build

If the added module makes use of configurations files you'll have to place them in the azerothcore-wotlk/env/docker/etc/modules directory. If this modules directory doesn't exist, you'll have to manually create it yourself.

After rebuilding you can (re)start the containers again.


Where are the etc and logs folders of my server?

By default they are located in env/docker/authserver/ and env/docker/worldserver/.

How can I change the docker containers configuration?

You can copy the file /conf/dist/.env.docker to .env and place it in the root folder of the project, then edit it according to your needs.

In the .env file you can configure:

  • the location of the data, etc and logs folders
  • the open ports
  • the MySQL root password

You can check all the configurations available in the docker-compose.yml file

Then your docker compose up will automatically locate the .env with your custom settings.

How can I start, stop, create and destroy my containers?

  • The docker compose start --profile app start will start your existing app containers in detached mode.

  • The docker compose stop will stop your containers, but it won't remove them.

  • The docker compose --profile app up builds, (re)creates, and starts your app services.

  • The docker compose down --remove-orphans command will stop your containers, but it also removes the stopped containers as well as any networks that were created.

  • ‚ö†ÔłŹ The docker compose down --rmi all -v --remove-orphans : command will stop, remove, and delete EVERYTHING. Including the volumes with the associated database ‚ö†ÔłŹ

How to deal with the permission issues

[Linux] You must run docker without sudo

It's very important to run Docker without using sudo or the root user when possible. To do that you must setup your current user to be part of the docker group. Please, follow the official guide to configure it: Post-installation steps for Linux

[Linux] the containers are running as root

For simplicity, we run all the containers of the azerothcore-wotlk repo as root user to avoid permission issues while running them. However, it means that you need to reset the user permissions of the files created by the containers on your host, you can easily do it by running this command

sudo chown -R $(id -u):$(id -g) .

If you want to run your containers with a different user instead, you need to create an .env file in the root directory and set the following variables:


The USER_ID and the GROUP_ID must be aligned with the user of your host

How can I delete my database files?

Warning Once you've deleted your database files they are unrecoverable unless you have a backup.

To remove your database files you firstly want to make sure that your containers have been stopped and removed by typing: docker compose down.

After stopping and removing your containers you can proceed to remove the volume by typing: docker volume rm azerothcore-wotlk_ac-database

Note If you've changed your folder name from the default azerothcore-wotlk the volume name will be slightly different. To find the new volume name you can use the command docker volume ls. The volume should be labelled something along the lines of xxxx_ac-database.

Performance optimizations (for dev server)

NOTE: If you are not experimenting any particular issues with I/O performance, we suggest to NOT use this configuration

The osxfs and the NTFS are well known to have performance limitations with docker binded volumes, we optimized the docker compose by using volumes and the "delegated/cached" strategy when possible, but that's not enough for some configurations.

  • Windows users: we suggest to use the WSL2 to clone our repo and work with docker. It has similar performance to a native linux environment

  • Mac users: unfortunately there is not something similar to WSL2 on Mac, however, only the ac-dev-server uses binded src volumes that can cause such slowness. If you still want to use the ac-dev-server under Mac, consider to try the acore-docker one. It uses named volumes that are way faster than the binded ones.

Memory usage

The total amount of RAM when running all AzerothCore docker containers is less than 2 GB with no players online.

This is an example of a fresh, empty AzerothCore server running with Docker on macOS:

AzerothCore Containers Memory

When used on GNU/Linux system, the amount of memory used by Docker is even less.

Docker containers vs Virtual machines

Using Docker will have the same benefits as using virtual machines, but with much less overhead:

Docker containers vs Virtual machines

AzerothCore running on macOS with Docker AzerothCore on macOS using Docker

AzerothCore running on Windows 10 with Docker AzerothCore on Windows 10 with Docker

Docker reference & support requests

For server administrators, we recommend to read the Docker documentation as well as the Docker Compose reference.

If you want to be an administrator of an AzerothCore production server, it helps if you master the basics of Docker usage.

Feel free to ask questions on StackOverflow and link them in the #support-docker channel of our Discord chat. We will be happy to help you!