컨테이너 기반 배포의 핵심 가치
AzerothCore는 오픈소스 MMO 프레임워크로서, 수동 설치 시 의존성 충돌·컴파일 환경 차이·데이터베이스 설정 등 다양한 난관에 부딪힌다. Docker 기술을 활용하면 이한 복잡성을 추상화하여, 어떤 호스트에서도 동일한 결과물을 재현할 수 있다. 특히 팀 개발 환경에서 "내 로컬에서는 되는데"라는 전형적인 문제를 원천 차단한다.
사전 준비사항
- Docker Engine 24.x 이상
- Compose 플러그인 (V2 문법 사용)
- Buildx (멀티플랫 빌드 지원)
Linux 환경에서는 패키지 매니저로 설치 후, docker buildx version 명령으로 정상 동작을 확인한다.
소스코드 확보
git clone https://github.com/azerothcore/azerothcore-wotlk.git
cd azerothcore-wotlk이미지 빌드 및 서비스 기동
프로젝트 루트에 포함된 docker-compose.yml을 활용한다. 별도 매개변수 없이 단일 명령으로 전체 스택을 구축한다.
# 이미지 빌드 (초기 실행 시 소스 컴파일 포함으로 시간 소요)
docker compose build
# 백그라운드 실행 및 DB 마이그레이션 자동 수행
docker compose up -d빌드와 실행을 동시에 처리하려면 docker compose up -d --build를 사용한다. 첫 기동 시 MariaDB 컨테이너가 기본 데이터를 적재하므로, docker compose logs -f ac-database로 진행 상황을 모니터링하는 것이 바람직하다.
관리자 계정 생성 절차
worldserver 에 직접 붙어 계정을 등록한다.
# 컨테이너 쉘 접속
docker compose exec ac-worldserver bash
# 또는 attach로 상호작용 세션 진입
docker compose attach ac-worldserver접속 후 콘솔에서 다음을 실행한다.
AC> account create gmuser SecurePass123! 3 -1순서대로 계정명, 비밀번호, GM 레벨(3), 만료 제한(-1)을 의미한다.
주요 구성 파일 해설
| 파일 경로 | 역할 |
|---|---|
docker-compose.yml | authserver, worldserver, database 서비스 정의 |
apps/docker/Dockerfile | 프로덕션용 최소 이미지 빌드 스크립트 |
apps/docker/Dockerfile.dev-server | 개발 환경용 (볼륨 마운트 및 디버깅 도구 포함) |
apps/docker/entrypoint.sh | 런타임 초기화 및 환경변수 주입 처리 |
apps/docker/docker-cmd.sh | 컨테이너 내 명령 라우팅 유틸리티 |
문제 진단 방법
특정 서비스가 정상 기동하지 않을 경우, 로그 필터링으로 원인을 특정한다.
# 개별 서비스 로그 확인
docker compose logs --tail=200 ac-authserver
docker compose logs --tail=200 ac-worldserver
# 실시간 스트리밍
docker compose logs -f ac-database업데이트 워크플로우
소스 변경 사항을 반용할 때는 기존 컨테이너를 완전히 제거 후 재구성한다.
git pull origin master
docker compose down
docker compose build --no-cache
docker compose up -d--no-cache 플래그를 붙이면 레이어 캐시를 무시하고 깨끗한 빌드를 보장한다. 데이터는 Compose 파일에서 정의한 볼륨에 의해 유지되므로, DB 데이터가 소실되지는 않는다.
운영 팁
데이터 지속성을 위해 .env 파일에서 볼륨 마운트 경로를 명시적으로 지정하고, docker compose down -v 사용 시 주의가 필요하다. 또한 apps/docker/ 디렉터리 내 스크립트를 커스터마이징하여, 컨테이너 시작 시 자동으로 모듈이나 패치를 적용하도록 확장할 수 있다.