- Table of Contents {:toc}
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
- Docker
- Git to clone our repo (suggested), otherwise you can manually download it
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 pull
docker compose up ac-db-import
docker compose up -d ac-authserver
docker compose run --rm --service-ports ac-worldserver
NOTE: The commands above should not be used if you want to keep your server up and running. Please, follow the steps below to proper setup your environment
Do you need a game client? check this page!
docker compose pull
This command will pull latest images from the docker hub
docker compose up ac-db-import
It runs the db-assembler tool to import all needed sql inside the mysql container
docker compose up
To startup your authserver and worlserver
CONGRATULATIONS! now you have an up and running AzerothCore. You can already login with a compatible client
NOTE: If you need to run them in background instead you can use the following command:
docker compose up -d
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.
Run the following command to get the ID of the worlserver container:
docker compose ps
You will see a list of docker services. The worlserver service will have a name that ends with _ac-worldserver_1 Use that name together with the following command:
docker attach <your-service-name>
Now you can use the worlserver console to run azerothcore commands, including the "account create ".
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
There are several commands to stop or restart the services, depending on your needs:
- docker compose stop : just stops the current running services
- docker compose restart : restarts the current running services
- docker compose down : stops and removes the containers.
- docker compose down --rmi all -v :
⚠️ stops, removes, and deletes EVERYTHING. Including the volumes with the associated database⚠️
You just need to combine the following 2 commands:
docker compose pull
docker-compose rm -s -v -f ac-client-data
docker compose up ac-db-import
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)
docker compose up ac-dev-server [-d]
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. This image is intended to be used together with the VSCode Docker extension
NOTE: This container uses the same mysql instance of the ac-authserver/worldserver, so it's not suggested to use all the services to avoid issues with the database consistence. However, you can always extends the docker compose to add a second database instance (read the paragraph below)
NOTE 2: This is an experimental system. For complete support we still suggest to use the docker layer of the azerothcore-wotlk repository.
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:
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.
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.
Check the /conf/dist folder that contains an override file ready to be used to implement a secondary worldserver
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:
- docker compose up phpmyadmin to startup the phpmyadmin container
- connect to https://127.0.0.1:8080 (unless you changed the port)
- 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
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
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.
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 ac-dev-tools bash to access the shell of the ac-dev-tools container. Once inside you can run the following commands:
- ./maps -> to extract dbc and maps
- ./vmap4extractor && ./vmap4assembler -> to extract and assemble the vertical maps
- ./mmaps_generator -> to extract and generate the movement maps
After the extraction (it can take hours) you will find the extracted files inside the /var/extractors folder.
NOTE: On Linux you probably need to change the permissions of the extracted files since they are processed inside the container by the root user. run sudo chmod -R youruser:yourgroup /var/extractors (change youruser:yourgroup accordingly) to get the ownership of those files.