version: "3.9" # extension field: https://docs.docker.com/compose/compose-file/compose-file-v3/#extension-fields x-networks: &networks networks: - ac-network x-ac-shared-conf: &ac-shared-conf <<: *networks working_dir: /azerothcore depends_on: ac-database: condition: service_healthy services: ac-database: <<: *networks image: mysql:8.0 restart: unless-stopped cap_add: - SYS_NICE # CAP_SYS_NICE ports: - ${DOCKER_DB_EXTERNAL_PORT:-63306}:3306 expose: - 3306 environment: - MYSQL_ROOT_PASSWORD=${DOCKER_DB_ROOT_PASSWORD:-password} volumes: - type: volume source: ac-database target: /var/lib/mysql healthcheck: test: '/usr/bin/mysql --user=root --password=$$MYSQL_ROOT_PASSWORD --execute "SHOW DATABASES;"' interval: 2s timeout: 40s retries: 20 ac-worldserver: container_name: acore-docker-ac-worldserver-1 # fixed container name to simplify the attach process <<: *ac-shared-conf stdin_open: true tty: true cap_add: - SYS_NICE # CAP_SYS_NICE image: acore/ac-wotlk-worldserver:${DOCKER_IMAGE_TAG:-7.0.0-dev.1} restart: unless-stopped privileged: true user: ${DOCKER_USER:-acore} ports: - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 - ${DOCKER_SOAP_EXTERNAL_PORT:-27878}:7878 expose: - 8085 volumes: - /mnt/user/appdata/azerothcore/scripts/lua:/azerothcore/env/dist/bin/lua_scripts/scripts - /mnt/user/appdata/azerothcore/env/dist/data/dbc:/azerothcore/env/dist/data/dbc:ro - /mnt/user/appdata/azerothcore/env/dist/data/maps:/azerothcore/env/dist/data/maps:ro - /mnt/user/appdata/azerothcore/env/dist/data/vmaps:/azerothcore/env/dist/data/vmaps:ro - /mnt/user/appdata/azerothcore/env/dist/data/mmaps:/azerothcore/env/dist/data/mmaps:ro environment: AC_DATA_DIR: "/azerothcore/env/dist/data" AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_LOGIN_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" AC_WORLD_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world" AC_CHARACTER_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters" AC_CLOSE_IDLE_CONNECTIONS: "0" depends_on: ac-eluna-ts-dev: condition: service_started ac-client-data: condition: service_started ac-db-import: condition: service_completed_successfully ac-authserver: <<: *ac-shared-conf tty: true image: acore/ac-wotlk-authserver:${DOCKER_IMAGE_TAG:-7.0.0-dev.1} restart: unless-stopped ports: - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724 expose: - 3724 environment: AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_TEMP_DIR: "/azerothcore/env/dist/temp" AC_LOGIN_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" AC_SQLDRIVER_LOG_FILE: "SQLDriver.log" AC_SQLDRIVER_QUERY_LOGGING: "1" depends_on: ac-database: condition: service_healthy ac-db-import: condition: service_completed_successfully ac-eluna-ts-dev: image: acore/eluna-ts:master # the build:lib is done in the healthcheck command: sh -c "cd /eluna-ts/modules && touch index.ts && npm install && cd /eluna-ts && npm run dev" # small workaround to make the other services to wait for the eluna-ts build healthcheck: test: sh -c "cd /eluna-ts/modules/eluna-ts && npm run build:lib && npm run build" timeout: 60s retries: 10 interval: 5s start_period: 10s restart: unless-stopped volumes: # from typescript - /mnt/user/appdata/azerothcore/scripts/typescript:/eluna-ts/modules # to lua - /mnt/user/appdata/azerothcore/scripts/lua:/eluna-ts/dist/ ac-client-data: <<: *networks image: acore/ac-wotlk-client-data:${DOCKER_IMAGE_TAG:-7.0.0-dev.1} volumes: - /mnt/user/appdata/azerothcore/env/dist/data/Cameras:/azerothcore/env/dist/data/Cameras - /mnt/user/appdata/azerothcore/env/dist/data/dbc:/azerothcore/env/dist/data/dbc - /mnt/user/appdata/azerothcore/env/dist/data/maps:/azerothcore/env/dist/data/maps - /mnt/user/appdata/azerothcore/env/dist/data/vmaps:/azerothcore/env/dist/data/vmaps - /mnt/user/appdata/azerothcore/env/dist/data/mmaps:/azerothcore/env/dist/data/mmaps ac-db-import: <<: *ac-shared-conf image: acore/ac-wotlk-worldserver:${DOCKER_IMAGE_TAG:-7.0.0-dev.1} command: ./env/dist/bin/dbimport environment: AC_DISABLE_INTERACTIVE: "1" AC_DATA_DIR: "/azerothcore/env/dist/data" AC_LOGS_DIR: "/azerothcore/env/dist/logs" AC_LOGIN_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" AC_WORLD_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world" AC_CHARACTER_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters" AC_CLOSE_IDLE_CONNECTIONS: "0" #profiles: [db-import] ac-dev-database: image: mysql:8.0 restart: unless-stopped profiles: [dev] cap_add: - SYS_NICE # CAP_SYS_NICE ports: - ${DOCKER_DB_EXTERNAL_PORT:-63300}:3306 - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 - ${DOCKER_SOAP_EXTERNAL_PORT:-27878}:7878 - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724 expose: - 3306 environment: - MYSQL_ROOT_PASSWORD=${DOCKER_DB_ROOT_PASSWORD:-password} volumes: - type: volume source: ac-dev-database target: /var/lib/mysql healthcheck: test: '/usr/bin/mysql --user=root --password=$$MYSQL_ROOT_PASSWORD --execute "SHOW DATABASES;"' interval: 2s timeout: 40s retries: 20 networks: ac-dev-network: aliases: - ac-database # needed by the server *.conf file ac-dev-server: tty: true privileged: true user: root image: acore/ac-wotlk-dev-server:${DOCKER_IMAGE_TAG:-7.0.0-dev.1} environment: DATAPATH: "/azerothcore/env/dist/data" DOCKER_ETC_FOLDER: "env/dist/etc" AC_LOGIN_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_auth" AC_WORLD_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_world" AC_CHARACTER_DATABASE_INFO: "ac-database;3306;root;${DOCKER_DB_ROOT_PASSWORD:-password};acore_characters" AC_DATA_DIR: "/azerothcore/env/dist/data" AC_LOGS_DIR: "/azerothcore/env/dist/logs" profiles: [dev] volumes: - /mnt/user/appdata/azerothcore/ac-dev-server:azerothcore - /mnt/user/appdata/azerothcore/var/shared:/azerothcore/var/shared # network_mode: service:ac-dev-database working_dir: /azerothcore depends_on: ac-dev-database: condition: service_healthy networks: - ac-dev-network ac-dev-tools: <<: *ac-shared-conf image: acore/ac-wotlk-tools:${DOCKER_IMAGE_TAG:-7.0.0-dev.1} working_dir: /azerothcore/env/client/ cap_add: - SYS_NICE # CAP_SYS_NICE volumes: - /mnt/user/appdata/azerothcore/env/client/Data:/azerothcore/env/client/Data - /mnt/user/appdata/azerothcore/env/dist/data/Cameras:/azerothcore/env/dist/data/Cameras - /mnt/user/appdata/azerothcore/env/client/dbc:/azerothcore/env/client/dbc - /mnt/user/appdata/azerothcore/env/client/maps:/azerothcore/env/client/maps - /mnt/user/appdata/azerothcore/env/client/vmaps:/azerothcore/env/client/vmaps - /mnt/user/appdata/azerothcore/env/client/mmaps:/azerothcore/env/client/mmaps profiles: [dev] phpmyadmin: <<: *networks image: phpmyadmin ports: - 8080:80 environment: - PMA_ARBITRARY=1 profiles: [dev] volumes: ac-database: ac-dev-server: ac-dev-database: ac-client-data-cameras: ac-client-data-dbc: ac-client-data-maps: ac-client-data-vmaps: ac-client-data-mmaps: networks: ac-network: ac-dev-network: