Files
AzerothCore_YAML/docker_compose.yaml
2023-10-07 00:47:51 -05:00

228 lines
7.9 KiB
YAML

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: