開始搭建基於docker的mangoszero WOW服務端,我自己的操作系統是mac os,其他平台操作可以等價替換
1.准備工作
(1) 安裝docker,參考docker官方文檔,https://www.docker.com,有各種平台的安裝教程,mac下可以直接 brew install caskroom/cask/docker
(2) 拉取docker官方centos鏡像,可使用阿里雲hub,https://dev.aliyun.com/detail.html?spm=5176.1972343.2.22.otKSdx&repoId=1198,版本推薦6.9或latest
docker pull centos 或 docker pull centos:6.9
(3) 建立一個文件夾專門用來保存此次搭建所用到的文件
mkdir -p mangos/wow60
(4) 從github拉取mangoszero源碼
mkdir mangos/wow60/mangos-zero cd mangos/wow60/mangos-zero/ git clone https://github.com/mangoszero/server.git server -b master --recursive
github現在國內被牆,只有搭梯子,這個源碼比較大,可能會花費非常長的時間。
一個比較快捷的辦法
1) 先下載mangoszero源碼的壓縮包,https://github.com/mangoszero/server/archive/master.zip,解壓縮后文件夾更名為server
2) 再根據https://github.com/mangoszero/server/blob/master/.gitmodules里的子模塊內容,一個一個的git clone
cd mangos/wow60/mangos-zero/server git clone https://github.com/mangos/mangosDeps dep -b master --recursive git clone https://github.com/mangos/realmd src/realmd -b master --recursive git clone https://github.com/elunaluaengine/eluna src/modules/Eluna -b master --recursive git clone https://github.com/mangos/ScriptDev3.git src/modules/SD3 -b master --recursive git clone https://github.com/mangostools/DbDocsEditor.git contrib/dbdocs_editor -b master --recursive git clone https://github.com/mangos/Extractor_projects.git src/tools/Extractor_projects -b master --recursive
win的子模塊如果是Linux或MAC就不需要clone了
(5) 從github拉取database
cd mangos/wow60 git clone http://github.com/mangoszero/database.git database -b master --recursive
2.搭建之前的規划
(1) 首先基於centos構建一套通用的編譯環境,這樣以后不僅可方便編譯mangos,也可用於編譯其他軟件,或者用作其他容器的母版
(2) 基於構建好的編譯環境編譯mangoszero的服務端
(3) 基於構建好的mangos服務端單獨構建驗證服務器
(4) 基於構建好的mangos服務端單獨構建世界服務器
(5) 基於構建好的編譯環境構建數據庫服務器
這樣的規划好處是分離驗證服務器,世界服務器,數據庫,這樣某一個鏡像需要變動,也不會影響其他的。
驗證服務器與世界服務器分離的好處是可以一個驗證服務支持多個世界服務
數據庫服務器可以使用容器,也可以使用其他Mysql服務
3.開始搭建編譯環境
(1) 創建一個文件夾用來保存dockerfile等
cd mangos mkdir base_env cd base_env
(2) 編寫Dockerfile
#基於cenos的latest版本 FROM centos:latest # 個人信息 MAINTAINER oliverCJ <cgjp123@163.com> #設置容器環境變量 ENV SRC_DIR /root/soft #創建文件夾保存需要用到的依賴文件 RUN mkdir -p ${SRC_DIR} #更新服務器,安裝wget,安裝epel源 RUN yum -y update \ && yum -y install wget \ && yum -y install epel-release \ && yum makecache #安裝依賴包 RUN yum -y install \ cmake \ make \ gcc \ gcc-c++ \ automake.noarch \ autoconf.noarch \ openssl \ openssl-devel \ bzip2-devel \ readline-devel \ ncurses-devel \ boost-devel \ libtool \ perl-devel \ perl-Net-Telnet.noarch #安裝必要軟件 RUN yum -y install \ #centos6.9版本安裝mysql,mysql-devel,mysql-server mariadb-devel \ mariadb-server \ curl \ git \ vim \ openssh-server \ openssh \ telnet \ net-tools \ yum clean all #ACE環境 RUN cd ${SRC_DIR} \ && wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/devel:/libraries:/ACE:/micro/CentOS_7/x86_64/ace-6.3.3-55.1.x86_64.rpm \ && rpm -ivh ace-6.3.3-55.1.x86_64.rpm \ && rm -f ace-6.3.3-55.1.x86_64.rpm \ && wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/devel:/libraries:/ACE:/micro:/versioned/CentOS_7/x86_64/mpc-6.3.3-42.1.x86_64.rpm \ && rpm -ivh mpc-6.3.3-42.1.x86_64.rpm \ && rm -f mpc-6.3.3-42.1.x86_64.rpm \ && wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/devel:/libraries:/ACE:/micro/CentOS_7/x86_64/ace-devel-6.3.3-55.1.x86_64.rpm \ && rpm -ivh ace-devel-6.3.3-55.1.x86_64.rpm \ && rm -f ace-devel-6.3.3-55.1.x86_64.rpm #配置時區,登錄信息等 RUN ln -sf /usr/share/zoneinfo/Asia/Chongqing /etc/localtime \ && sed -i \ -e 's/^UsePAM yes/#UsePAM yes/g' \ -e 's/^#UsePAM no/UsePAM no/g' \ -e 's/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g' \ -e 's/^#UseDNS yes/UseDNS no/g' \ /etc/ssh/sshd_config \ && echo "root" | passwd --stdin root \ && ssh-keygen -q -b 1024 -N '' -t rsa -f /etc/ssh/ssh_host_rsa_key \ && ssh-keygen -q -b 1024 -N '' -t dsa -f /etc/ssh/ssh_host_dsa_key \ && echo "NETWORKING=yes" > /etc/sysconfig/network RUN rm -rf ${SRC_DIR}/* RUN rm -rf /tmp/*
(3) 編寫build.yml
version: '2'
services:
base:
build: ./
image: base-env:latest
(4) 執行構建命令
docker-compose -f build.yml build
(5) 構建完成
構建完成后可使用 docker images 查看構建好的鏡像,鏡像名稱為base-env,版本為latest
4.備注
鏡像構建完成后,如果有需要的軟件忘記裝,可以依賴鏡像啟動容器
docker run -it --rm --name base-env base-env:latest
啟動后將直接登錄進容器,然后安裝所需軟件,安裝完畢后切勿exit退出,因為啟動容器時使用了--rm參數,一旦退出,所有修改都會丟失
這時應當新開一個命令行窗口,執行保存修改命令
docker commit base-env base-env:latest
這時就可以回到原來的命令行exit退出容器,所有修改也保存並更新到鏡像中了
下次將開始編譯mangoszero服務端代碼