• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Иконка ресурса

Установка AzerothCore с помощью Docker

Elvis

Поклонник кармы
Модератор
Агент нато
Чингачгук
Победитель в номинации 2022
Победитель в номинации 2021
Сообщения
159
Розыгрыши
0
Репутация
1 128
Реакции
336
Баллы
703
Установка AzerothCore с помощью Docker — это упрощенная процедура, которая имеет несколько преимуществ:
  • Это очень легко! Докер сделает за вас всю грязную работу.
  • Это можно сделать на всех операционных системах, где доступен Docker (включая Windows, GNU/Linux, macOS).
  • Вам не нужно устанавливать много зависимостей (забудьте о Visual Studio, cmake, mysql и т. Д. Они НЕ требуются)
  • Забудьте об ошибках, связанных с платформой. При использовании Docker AzerothCore всегда будет работать в режиме Linux.
  • Есть много других .
Требования к программному обеспечению

Единственные требования - это и Docker

Новые операционные системы [рекомендуется]:
  • Для GNU/Linux установите и
  • Для macOS 10.12+ Sierra и более новой версии установите .
  • Для Windows 10 установите
Старые операционные системы [не тестировались]:
  • Для macOS старше 10.11 El Capitan и старше установите
  • Для Windows 7/8 / 8.1 установите
Прежде чем двигаться дальше, убедитесь, что в вашей системе установлены docker и docker-compose, набрав в терминале:
Код:
docker --version
docker-compose --version
Вы должны увидеть аналогичный результат:
Код:
Docker version 20.10.5, build 55c4c88
docker-compose version 1.28.2, build 67630359
Примечание для пользователей Windows: вы можете использовать git-bash (оболочку, включенную в git) в качестве терминала.

Клонируйте репозиторий AzerothCore

Вам необходимо клонировать репозиторий AzerothCore (или использовать собственный форк):
Код:
git clone https://github.com/azerothcore/azerothcore-wotlk.git
Теперь перейдите в основной каталог с помощью cd azerothcore-wotlk. Все команды нужно будет запускать внутри этой папки.

Установка

Внутри вашего терминала (если вы используете Windows, используйте git bash), выполните следующие команды внутри папки azerothcore-wotlk
ПРИМЕЧАНИЕ: в следующей процедуре используется панель управления acore.sh, однако эти команды являются сокращением команд docker-compose. вы можете проверить команды docker-compose, используемые в фоновом режиме, запустив ./acore.sh docker --help и прочитать описание каждой команды

1) Загрузите данные клиента:
Код:
./acore.sh docker client-data
ПРИМЕЧАНИЕ. Эта команда должна выполняться только при первой установке и при наличии новой версии клиентских данных.

2) Компиляция AzerothCore
Код:
./acore.sh docker build
Он будет создавать образы докеров, компилировать ядро и автоматически импортировать необходимые файлы SQL! Это может занять некоторое время. А пока вы можете пойти и выпить бокал вина 🍷

ПРИМЕЧАНИЕ Для разработчиков: если вы работаете с кодом и вам нужен быстрый способ скомпилировать свои двоичные файлы(бинарники), приведенная выше команда может быть немного излишней для вас, потому что вам, вероятно, не нужно перестраивать изображения или импортировать SQL, если вы их не меняли. Поэтому мы предлагаем вместо этого использовать одно из следующих решений:
  • ./acore.sh docker build:compiler он только создает образ разработчика и компилирует исходники без импорта sql.
  • ./acore.sh docker dev:build она похожа на предыдущую команду, но использует dev-контейнер, который использует тома вместо контейнера. В некоторых конфигурациях это может быть быстрее.
3) Запускаем контейнеры
Код:
./acore.sh docker start:app

Поздравляю! Теперь у вас есть работающий сервер Azerothcore! Переходите к следующему шагу, чтобы создать учетную запись

Если вам нужно запустить это в фоновом режиме, вы можете использовать следующую команду для запуска автономного режима docker-compose:
Код:
./acore.sh docker start:app:d

4) Доступ к консоли мирового сервера

Откройте новый терминал и выполните следующую команду
Код:
./acore.sh docker attach ac-worldserver
Если вы получили сообщение об ошибке, устройство ввода не является телетайпом. Если вы используете mintty, попробуйте поставить перед командой префикс winpty, вы можете запустить следующую команду
Код:
docker-compose ps
Далее найдите имя мирового сервера
Код:
azerothcore-wotlk_ac-authserver_1    ./acore.sh run-authserver     Up             0.0.0.0:3724->3724/tcp,:::3724->3724/tcp
azerothcore-wotlk_ac-database_1      docker-entrypoint.sh mysqld   Up (healthy)   0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp
azerothcore-wotlk_ac-worldserver_1   ./acore.sh run-worldserver    Up             0.0.0.0:7878->7878/tcp,:::7878->7878/tcp, 0.0.0.0:8085->8085/tcp,:::8085->8085/tcp

Затем прикрепите имя мирового сервера с помощью winpty
Код:
winpty docker attach azerothcore-wotlk_ac-worldserver_1

Эта команда автоматически подключит ваш терминал к консоли мирового сервера. Теперь вы можете запустить команду account create <user> <password>, чтобы создать свою первую внутриигровую учетную запись.

5) Доступ к базе данных и обновление realmlist

Для доступа к базе данных MySQL мы рекомендуем такие клиенты, как (для Windows / Linux + Wine) или (для macOS). Используйте root как пользователя и 127.0.0.1 как хост по умолчанию. Паролем по умолчанию для пользователя root БД будет password.
Если ваш сервер не находится в той же сети, что и ваш клиент, вы можете обновить адрес realmlist в базе данных acore_auth с помощью публичного IP-адреса вашего сервера:
SQL:
USE acore_auth;
SELECT * FROM realmlist;
UPDATE realmlist SET address='<ПУБЛИЧНЫЙ АЙПИ-АДРЕС ВАШЕГО СЕРВЕРА>';

Как правильно обновлять AzerothCore для применения последних правок

Прежде всего, вам нужно использовать инструмент git для обновления вашего репозитория, выполнив следующую команду:

git pull origin master — это загрузит последние коммиты из репозитория azerothcore

Затем вы можете просто запустить следующую команду:

./acore.sh docker build — это для ребилда и создания новых бинарников. Более того, он также будет импортировать последние изменения базы данных.

ПРИМЕЧАНИЕ. AC не так часто обновляет данные клиента, но когда это произойдет, вы можете выполнить следующую команду:

./acore.sh client-data — это загрузит новую версию данных клиента, если доступна новая версия

Как запустить мировой сервер с GDB

Запуск сервера с GDB позволяет создавать crashdump в случае сбоя сервера. Данный файл будет полезен для разрботчиков, чтобы понять, в чём причина падения сервера, и, возможно, исправить это.

Имейте в виду, что вы должны скомпилировать ядро с одним из следующих типов компиляции: Debug или RelWithDebInfo, иначе GDB не будет работать должным образом.

Чтобы включить GDB, необходимо выполнить следующие шаги:
  1. Создайте файл config.sh в каталоге /conf/ репозитория azerothcore-wotlk.
  2. Добавьте эту конфигурацию внутрь: AC_RESTARTER_WITHGDB = true. Он настроит перезапуск, используемый службами докеров, для прямого использования GDB вместо бинарников.
  3. Перезагрузите контейнеры и все готово!
Если сервер выйдет из строя, вы найдете файл крашдампа (gdb.txt) в папке /env/docker.

Как пользоваться dev-контейнером

В docker-compose вы можете найти службу ac-dev-server. Эта служба используется для операций сборки и db, но вы также можете использовать ее для разработки с расширением .

Dev-контейнер позволяет использовать Docker-контейнер в качестве полнофункциональной среды разработки. Папка .devcontainer в нашем проекте содержит файлы, которые сообщают VS Code, как получить доступ (или создать) контейнер разработки со всеми необходимыми инструментами. Этот контейнер будет запускать AzerothCore со всем программным обеспечением и конфигурациями, необходимыми для работы с нашей кодовой базой и отладки сервера.

Внутри репозитория azerothcore есть предварительно настроенный devcontainer.json, который можно открыть с помощью VSCode command palette. Чтобы настроить Dev-Container, выполните следующие действия:
  1. Скопируйте файл docker-compose.override.yml из папки /conf/dist в корневой каталог репозитория azerothcore. (необходимо, пока не будет решено)
  2. Установите расширение
  3. Откройте папку azerothcore внутри VSCode
  4. Откройте VSCode (Ctrl+Shift+P) и запустите: >Remote-Containers: Reopen in Container
ВАЖНО: dev-контейнер также содержит предварительно настроенное действие отладчика (дебагера), которое позволяет вам использовать контрольные точки и производить отладку вашего мирового сервера.

Не забывайте, что вам необходимо установить расширение в IDE .

Как производить отладку кода с помощью dev-контейнера

ПРИМЕЧАНИЕ: имейте в виду, что вы должны компилировать свой код в режиме отладки, иначе отладчик не будет работать должным образом.

Оказавшись внутри dev-контейнера VSCode, вы можете перейти к сеансу отладки и использовать Linux/Docker debug действие, как вы можете видеть на этом изображении:
1.png
Он запустит мировой сервер в режиме отладки, а затем вы можете начать размещать контрольные точки в своем коде для его отладки.
2.png
Для получения дополнительной информации о том, как отлаживать в VSCode, вы можете ознакомиться с .

Как создать второй realm с помощью docker-compose

Чтобы создать второй realm, мы предлагаем вам взглянуть на пример, доступный в репозитории .

Добавление модулей

Чтобы добавить модуль, просто поместите каталог модуля в каталог /azerothcore-wotlk/modules.

После добавления модуля вам нужно будет пересобрать AC:
Код:
./acore.sh docker build

Если добавленный модуль использует файлы конфигурации, вам придется поместить их в каталог azerothcore-wotlk/env/docker/etc/modules. Если этот каталог модулей не существует, вам придется вручную создать его самостоятельно.

После ребилда вы можете снова перезапустить контейнеры.

Использование памяти (RAM)

Общий объем оперативной памяти при запуске всех док-контейнеров AzerothCore составляет менее 2 ГБ, при отсутствии игроков в сети.

Это пример нового пустого сервера AzerothCore, работающего с Docker на macOS:

3.png

При использовании в системе GNU/Linux объем памяти, используемой Docker, еще меньше.

Докер контейнеры против виртуальных машин

Использование Docker будет иметь те же преимущества, что и использование виртуальных машин, но с гораздо меньшими накладными расходами:

4.png

AzerothCore работающий на macOS с Docker
5.png
AzerothCore работающий на Windows 10 с Docker
6.png

FAQ

Где на моём сервере папки с конфигурацией и логами?


По умолчанию они расположены в env/docker/authserver/ и env/docker/worldserver/.

Как я могу изменить конфигурацию контейнеров докера?

Вы можете скопировать файл /conf/dist/.env.docker в .env и поместить его в корневую папку проекта, а затем отредактировать его в соответствии с вашими потребностями.

В файле .env вы можете настроить:
  • Расположение data, etc и logs папок.
  • Открытые порты.
  • Пароль от root пользователя MySQL.
Затем ваш docker-compose up автоматически найдет .env с вашими пользовательскими настройками.

Как я могу запускать, останавливать, создавать и уничтожать свои контейнеры?
  • docker-compose start --profile app start запустит ваши существующие контейнеры приложений в автономном режиме.
  • docker-compose stop остановит ваши контейнеры, но не удалит их.
  • docker-compose --profile app up собирает, перезапускает и стартует службы вашего приложения.
  • docker-compose down Команда остановит ваши контейнеры, но также удалит остановленные контейнеры, а также все созданные сети.
  • docker-compose down --rmi all -v команда остановит и удалит ВСЕ.
Как я могу удалить файлы базы данных?

Предупреждение
. После удаления файлов базы данных их невозможно будет восстановить, если у вас нет резервной копии.

Чтобы удалить файлы базы данных, вам необходимо сначала убедиться, что ваши контейнеры остановлены и удалены, набрав: docker-compose down.

После остановки и удаления контейнеров вы можете приступить к удалению тома, набрав: docker volume rm azerothcore-wotlk_ac-database

Примечание. Если вы изменили имя папки с используемого по умолчанию azerothcore-wotlk, имя тома будет немного другим. Чтобы найти новое имя тома, вы можете использовать команду docker volume ls. Том должен быть помечен чем-то вроде xxxx_ac-database.

Оптимизация macOS (для сервера разработки)

Как известно, osxfs имеет , поэтому AC оптимизировали файл docker-compose для osxfs, используя тома и стратегию «делегирования». Однако ФС также представили экспериментальную функцию, позволяющую использовать именованные тома вместо связанных. Вы можете использовать эту функцию, установив эту переменную среды в вашем файле .env:
Код:
DOCKER_EXTENDS_BIND=abstract-no-bind

Это скопирует все внешние источники в постоянный том внутри докера, что означает, что в качестве недостатка изменения внутри контейнера не будут отражаться снаружи (хост) и наоборот.

ПРИМЕЧАНИЕ. Если вы не экспериментируете с какими-либо конкретными проблемами с производительностью ввода-вывода, AC предлагает НЕ использовать эту конфигурацию.

Как я могу запускать команды в консоли мирового сервера?

Помимо использования команды ./acore.sh docker attach, вы можете использовать ручной подход, если у вас возникли какие-либо проблемы.

Прежде всего, введите docker-compose ps, чтобы узнать имя вашего контейнера мирового сервера, это должно быть что-то вроде azerothcore-wotlk_ac-worldserver_1

Чтобы прикрепить: откройте новую вкладку терминала и введите docker attach azerothcore-wotlk_ac-worldserver_1.

Примечание для пользователей Windows: используя git bash в Windows, вы должны добавить к этой команде префикс winpty. Пример:

Код:
winpty docker attach azerothcore-wotlk_ac-worldserver_1

Чтобы открепить: нажмите ctr+p и ctrl+q.

НЕ пытайтесь открепить с помощью ctrl+c, иначе вы убьете процесс мирового сервера!
 

Назад
Сверху Снизу