azerothcore setup #58

Open
opened 2026-03-29 19:14:40 -04:00 by sickprodigy · 1 comment
Owner

Have pulled this
https://www.azerothcore.org/wiki/install-with-docker
and somewhat updated the docker-compose.yml that was within, need to create a user:pass for mariadb still

Create 3 DBs + a dedicated user on the mariadb container, grant it rights, then change the root;${DOCKER_DB_ROOT_PASSWORD...} part in the 3 AC_*_DATABASE_INFO strings to your new user/password.

take note of steps to create user in this file:
mysql_mariadb-documentation.txt

then can try to run this

# docker-compose.yml for AzerothCore.
#
# Start the server with `docker compose up -d --build`
#
# Don't make changes this file! make a `docker-compose.override.yml` and make your
# changes there instead.

services:
  # Internal DB (disabled): kept for reference.
  # This stack is configured to use an external MariaDB/MySQL container ("mariadb")
  # on the external "homelab" network instead.
  #
  # ac-database:
  #   container_name: ac-database
  #   image: mysql:8.4
  #   networks:
  #     - homelab
  #   ports:
  #     - ${DOCKER_DB_EXTERNAL_PORT:-3306}:3306
  #   environment:
  #     - MYSQL_ROOT_PASSWORD=${DOCKER_DB_ROOT_PASSWORD:-password}
  #   volumes:
  #     - ${DOCKER_VOL_DB:-ac-database}:/var/lib/mysql
  #   restart: unless-stopped
  #   healthcheck:
  #     test: "/usr/bin/mysql --user=root --password=$$MYSQL_ROOT_PASSWORD --execute \"SHOW DATABASES;\""
  #     interval: 5s
  #     timeout: 10s
  #     retries: 40

  ac-db-import:
    container_name: ac-db-import
    image: acore/ac-wotlk-db-import:${DOCKER_IMAGE_TAG:-master}
    networks:
      - homelab
    build:
      context: .
      target: db-import
      dockerfile: apps/docker/Dockerfile
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
    environment:
      AC_DATA_DIR: "/azerothcore/env/dist/data"
      AC_LOGS_DIR: "/azerothcore/env/dist/logs"
      AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth"
      AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world"
      AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters"
    volumes:
      - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc
      # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544
      - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated
    # depends_on:
    #   ac-database:
    #     condition: service_healthy

  ac-worldserver:
    container_name: ac-worldserver
    image: acore/ac-wotlk-worldserver:${DOCKER_IMAGE_TAG:-master}
    build:
      context: .
      target: worldserver
      dockerfile: apps/docker/Dockerfile
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
    networks:
      - homelab
    stdin_open: true
    tty: true
    restart: unless-stopped
    env_file:
        ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac}
    environment:
      AC_DATA_DIR: "/azerothcore/env/dist/data"
      AC_LOGS_DIR: "/azerothcore/env/dist/logs"
      AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth"
      AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world"
      AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters"
    ports:
      - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085
      - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878
    volumes:
      - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc
      # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544
      - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated
      # client data
      - ${DOCKER_VOL_DATA:-ac-client-data}:/azerothcore/env/dist/data/:ro
    depends_on:
      # ac-database:
      #   condition: service_healthy
      ac-db-import:
        condition: service_completed_successfully
      ac-client-data-init:
        condition: service_completed_successfully

  ac-authserver:
    container_name: ac-authserver
    image: acore/ac-wotlk-authserver:${DOCKER_IMAGE_TAG:-master}
    build:
      context: .
      target: authserver
      dockerfile: apps/docker/Dockerfile
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
    networks:
      - homelab
    tty: true
    restart: unless-stopped
    env_file:
        ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac}
    environment:
      AC_LOGS_DIR: "/azerothcore/env/dist/logs"
      AC_TEMP_DIR: "/azerothcore/env/dist/temp"
      AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth"
    volumes:
      - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc
      # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544
      - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated
    ports:
      - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724
    depends_on:
      # ac-database:
      #   condition: service_healthy
      ac-db-import:
        condition: service_completed_successfully

  ac-client-data-init:
    container_name: ac-client-data-init
    image: acore/ac-wotlk-client-data:${DOCKER_IMAGE_TAG:-master}
    build:
      context: .
      target: client-data
      dockerfile: apps/docker/Dockerfile
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
    volumes:
      - ${DOCKER_VOL_DATA:-ac-client-data}:/azerothcore/env/dist/data

  # used for extracting maps from files shipped with game client
  # Most of the time this shouldn't be needed
  ac-tools:
    container_name: ac-tools
    image: acore/ac-wotlk-tools:${DOCKER_IMAGE_TAG:-master}
    build:
      context: .
      target: tools
      dockerfile: apps/docker/Dockerfile
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
    working_dir: /azerothcore/env/client/
    volumes:
      # this is not the directory of the extracted data! It's the client folder used by the extractors
      - ${DOCKER_AC_CLIENT_FOLDER:-./var/client}:/azerothcore/env/dist/bin/Data
    # Activate with `docker compose --profile tools ...`
    profiles: [tools]

  # Dev server with the ./azerothcore folder binded from the host
  # Please use Linux, WSL2 or any ext-compatible filesystem
  # to avoid performance issues
  #
  # This is primarily intended for use with the "devcontainer" project
  #
  # This is provided primarily for development, though it doesn't receive
  # first-class support
  ac-dev-server:
    tty: true
    image: acore/ac-wotlk-dev-server:${DOCKER_IMAGE_TAG:-master}
    build:
      context: .
      dockerfile: ./apps/docker/Dockerfile.dev-server
      args:
        USER_ID: ${DOCKER_USER_ID:-1000}
        GROUP_ID: ${DOCKER_GROUP_ID:-1000}
        DOCKER_USER: ${DOCKER_USER:-acore}
      target: dev
    env_file:
        ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac}
    environment:
      AC_DATA_DIR: "/azerothcore/env/dist/data"
      AC_LOGS_DIR: "/azerothcore/env/dist/logs"
      AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth"
      AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world"
      AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters"
    networks:
      - homelab
    ports:
      - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724
      - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085
      - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878
    volumes:
      - ${DOCKER_VOL_ROOT:-.}:/azerothcore:cached
      # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544
      - ac-build-dev:/azerothcore/var/build
      - ac-ccache-dev:/azerothcore/var/ccache
      # this is not the directory of the extracted data! It's the client folder used by the extractors
      - ${DOCKER_AC_CLIENT_FOLDER:-./var/client}:/azerothcore/env/dist/bin/Data
    # Activate with `docker compose --profile dev ...`
    profiles: [dev]
    # depends_on:
    #   ac-database:
    #     condition: service_healthy

volumes:
  # ac-database:
  ac-client-data:
  # Used for dev server
  ac-build-dev:
  ac-ccache-dev:

networks:
  # ac-network:
  homelab:
    name: homelab
    external: true

Have pulled this https://www.azerothcore.org/wiki/install-with-docker and somewhat updated the docker-compose.yml that was within, need to create a user:pass for mariadb still Create 3 DBs + a dedicated user on the [mariadb](vscode-file://vscode-app/c:/Users/awlea/AppData/Local/Programs/Microsoft%20VS%20Code/cfbea10c5f/resources/app/out/vs/code/electron-browser/workbench/workbench.html) container, grant it rights, then change the root;${DOCKER_DB_ROOT_PASSWORD...} part in the 3 AC_*_DATABASE_INFO strings to your new user/password. take note of steps to create user in this file: mysql_mariadb-documentation.txt then can try to run this ``` # docker-compose.yml for AzerothCore. # # Start the server with `docker compose up -d --build` # # Don't make changes this file! make a `docker-compose.override.yml` and make your # changes there instead. services: # Internal DB (disabled): kept for reference. # This stack is configured to use an external MariaDB/MySQL container ("mariadb") # on the external "homelab" network instead. # # ac-database: # container_name: ac-database # image: mysql:8.4 # networks: # - homelab # ports: # - ${DOCKER_DB_EXTERNAL_PORT:-3306}:3306 # environment: # - MYSQL_ROOT_PASSWORD=${DOCKER_DB_ROOT_PASSWORD:-password} # volumes: # - ${DOCKER_VOL_DB:-ac-database}:/var/lib/mysql # restart: unless-stopped # healthcheck: # test: "/usr/bin/mysql --user=root --password=$$MYSQL_ROOT_PASSWORD --execute \"SHOW DATABASES;\"" # interval: 5s # timeout: 10s # retries: 40 ac-db-import: container_name: ac-db-import image: acore/ac-wotlk-db-import:${DOCKER_IMAGE_TAG:-master} networks: - homelab build: context: . target: db-import dockerfile: apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} environment: AC_DATA_DIR: "/azerothcore/env/dist/data" AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world" AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters" volumes: - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544 - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated # depends_on: # ac-database: # condition: service_healthy ac-worldserver: container_name: ac-worldserver image: acore/ac-wotlk-worldserver:${DOCKER_IMAGE_TAG:-master} build: context: . target: worldserver dockerfile: apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} networks: - homelab stdin_open: true tty: true restart: unless-stopped env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} environment: AC_DATA_DIR: "/azerothcore/env/dist/data" AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world" AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters" ports: - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878 volumes: - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544 - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated # client data - ${DOCKER_VOL_DATA:-ac-client-data}:/azerothcore/env/dist/data/:ro depends_on: # ac-database: # condition: service_healthy ac-db-import: condition: service_completed_successfully ac-client-data-init: condition: service_completed_successfully ac-authserver: container_name: ac-authserver image: acore/ac-wotlk-authserver:${DOCKER_IMAGE_TAG:-master} build: context: . target: authserver dockerfile: apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} networks: - homelab tty: true restart: unless-stopped env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} environment: AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_TEMP_DIR: "/azerothcore/env/dist/temp" AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" volumes: - ${DOCKER_VOL_ETC:-./env/dist/etc}:/azerothcore/env/dist/etc # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544 - ${DOCKER_VOL_LOGS:-./env/dist/logs}:/azerothcore/env/dist/logs:delegated ports: - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724 depends_on: # ac-database: # condition: service_healthy ac-db-import: condition: service_completed_successfully ac-client-data-init: container_name: ac-client-data-init image: acore/ac-wotlk-client-data:${DOCKER_IMAGE_TAG:-master} build: context: . target: client-data dockerfile: apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} volumes: - ${DOCKER_VOL_DATA:-ac-client-data}:/azerothcore/env/dist/data # used for extracting maps from files shipped with game client # Most of the time this shouldn't be needed ac-tools: container_name: ac-tools image: acore/ac-wotlk-tools:${DOCKER_IMAGE_TAG:-master} build: context: . target: tools dockerfile: apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} working_dir: /azerothcore/env/client/ volumes: # this is not the directory of the extracted data! It's the client folder used by the extractors - ${DOCKER_AC_CLIENT_FOLDER:-./var/client}:/azerothcore/env/dist/bin/Data # Activate with `docker compose --profile tools ...` profiles: [tools] # Dev server with the ./azerothcore folder binded from the host # Please use Linux, WSL2 or any ext-compatible filesystem # to avoid performance issues # # This is primarily intended for use with the "devcontainer" project # # This is provided primarily for development, though it doesn't receive # first-class support ac-dev-server: tty: true image: acore/ac-wotlk-dev-server:${DOCKER_IMAGE_TAG:-master} build: context: . dockerfile: ./apps/docker/Dockerfile.dev-server args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} target: dev env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} environment: AC_DATA_DIR: "/azerothcore/env/dist/data" AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_LOGIN_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" AC_WORLD_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world" AC_CHARACTER_DATABASE_INFO: "mariadb;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters" networks: - homelab ports: - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724 - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878 volumes: - ${DOCKER_VOL_ROOT:-.}:/azerothcore:cached # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544 - ac-build-dev:/azerothcore/var/build - ac-ccache-dev:/azerothcore/var/ccache # this is not the directory of the extracted data! It's the client folder used by the extractors - ${DOCKER_AC_CLIENT_FOLDER:-./var/client}:/azerothcore/env/dist/bin/Data # Activate with `docker compose --profile dev ...` profiles: [dev] # depends_on: # ac-database: # condition: service_healthy volumes: # ac-database: ac-client-data: # Used for dev server ac-build-dev: ac-ccache-dev: networks: # ac-network: homelab: name: homelab external: true ```
Author
Owner

at the top it says don't make changes to this file, so trying to do it their way but still going to be loading another version of mysql i don't like. so prolly going to just fork and work from my fork

at the top it says don't make changes to this file, so trying to do it their way but still going to be loading another version of mysql i don't like. so prolly going to just fork and work from my fork
Sign in to join this conversation.