- 精华
- 阅读权限
- 60
- 好友
- 相册
- 分享
- 听众
- 收听
- 注册时间
- 2008-3-6
- 在线时间
- 小时
- 最后登录
- 1970-1-1
|
因为自己的服务器环境版本比较高, 跑服务端好多依赖要降级, 又不舍得再买个服务器, 于是想到了docker, 我这里详细说一下docker开服的思路.
要点1: 因为tlbb服务端要求mysql版本是5.1.43, 我的是5.7, 本来我觉得这不是问题, 都是同一个大版本, 没想到插入中文记录的时候就硬是报错, 身为一个后端程序员, 解决了两天, 真的耻辱, 降级mysql又要换依赖, 这个方法卒!
要点2: tlbb服务器都大多都是跑ubuntu14.04, 我个人又对centos更熟悉, 所以ubuntu各方面操作, 包管理, 依赖等用起来很不习惯.
要点3: 群里的网友太不热心了, 幸好我自己有两把刷子, 不然真的搞不定. (在此期间还认识了一个畅游的专负责tlbb充值业务的程序员道友, 非常给力给我找回来丢失的账号)
# 1. 下载环境依赖包
是一个叫做 "最新 天龙环境搭建-" 的压缩包 别人给我的
解压缩 重命名(全英文) 然后上传服务器
比如我放在/root/temp/envBuild
# 2. 将环境搭建的这个文件夹 挂在进合适的docker镜像里
这里我选择的是centos7.2
docker run --name tlbb-env -it -v /root/temp/envBuild:/opt/ centos:centos7.2.1511
其中exec -it <> /bin/bash命令是进入容器内部
即这个命令 就把我的/root/temp/envBuild挂载到镜像的/opt/里去了 注意这里就是opt文件夹, 因为里面那个脚本 是这样写的 我也懒得改脚本 不规范就不规范吧
# 3. 跑一下环境
./tl-chs.sh
如果跟我的镜像一样, 选2, 这里根据自己的镜像版本选择
# 4. 保存镜像
这个镜像只要带上tlbb文件夹就可以跑天龙八部了, 还差一步, 就是保存这个镜像 然后把tlbb文件夹挂载进去
我们现在还在docker内部 我们先输入exit退出镜像
然后我们提交我们的镜像 比如
docker commit -m "天龙八部基本环境" -a "MASIJUN" <id> tlbb-base-env
这个id可以通过docker ps | grep centos查看 不用全部输入 输个三四位就够了(不重复的前提下)
这个时候 输入docker images | grep tlbb就可以看到我们自己的镜像了
# 5. 编写dockerfile
这时候我们要写一个Dockerfile, 因为docker启动机制不同于虚拟机, 必须要有一个可持续进行的脚本来维持虚拟机的启动, 这里我推荐两种方式
(1) 第一种方式, 适合个人玩家, 我们进入run.sh的编辑, 我们把最下面有一行exit, 替换成 tail -f /dev/null 这里可以让脚本持续进行
(2) 第二种方式, 适合查看日志, 就是把Server启动方式换成 ./Server, 这个不需要我赘述, 如果有这方面需求一下就看得明白.
这个Dockerfile务必要放在 tlbb同根目录, 比如tlbb在/home下 这个Dockerfile也要在那里 因为Dockerfile是相对路径寻找文件的, 反正放一起就对了 放在同级
Dockerfile包含很多内容, 主要是FROM COPY EXPOSE ENTRYPOINT
完整Dockerfile给你们 直接复制粘贴小改即可
# 基于这个tlbb环境镜像 创建带服务端镜像
FROM tlbb-base-env:latest
# 把这个tlbb目录复制到镜像里
COPY ./tlbb /home/
# 数据库端口
EXPOSE 3306
# 登录端口
EXPOSE 7775
# 游戏端口
EXPOSE 7776
# 启动命令
ENTRYPOINT /home/tlbb/run.sh
如果多服务器 需要用docker-compose编排一下 或者手动启多个docker, 也是一样, 有需要用到这个功能的, 都不用我多说哈哈哈
# 6. 执行Dockerfile
在Dockerfile所在文件夹 执行docker build -t <name> ./
这个名字自己起哈
# 7. 执行
docker run -d --name <name> -p 7712:3306 -p 7775:7775 -p 7776:7776 <image-name>:<tag>
-d是后台运行
-p是端口映射, 把镜像里的端口映射出来的意思 左边为主机端口, 右边为镜像里的端口, 大致意思就是 我把服务器里面自带的mysql的3306 映射到主机的7712端口这样的意思, 如果多服务器 可以使用这种方法在不批量修改配置文件的前提下规避端口冲突
# 8. 附
(1)我在第一次运行 发现mysql没有起来, 于是可以在/run.sh最上面添加一行命令 /etc/init.d/mysql restart, 重新执行第六步
(2)mysql装好了游戏还没起来 使用docker exec -it <id> /bin/bash进入容器内部, 输入ps -ef查看 有哪些服务启动成功, 结果一个都没起来, 使用cd到Server 使用./shm start发现缺少/lib/ld-linux.so.2依赖, 手动yum安装一下吧. yum install ld-linux.so.2
(3)再次启动还是报错, 缺少 libstdc++.so.6, 然后输入yum install libstdc++-4.8.5-44.el7.x86_64先更新一手, 在启动还是错, 还是一样的 再次 yum install libstdc++.so.6, 在启动没错了
# 9. 声明
本文章是突然有想法想做 边做边写的 在跟着我的过程 必定会踩坑 有问题及时交流 不要骂我
|
评分
-
查看全部评分
|