commit 68c0c0d7b55b0d6f08be2973731f3e9cd59fb737 Author: kmoody Date: Sat Oct 7 00:47:51 2023 -0500 Add docker_compose.yaml diff --git a/docker_compose.yaml b/docker_compose.yaml new file mode 100644 index 0000000..0e0c481 --- /dev/null +++ b/docker_compose.yaml @@ -0,0 +1,228 @@ +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: \ No newline at end of file