用程序员的方式打开服务端 docker启动天龙服务端
因为自己的服务器环境版本比较高, 跑服务端好多依赖要降级, 又不舍得再买个服务器, 于是想到了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退出镜像
然后我们提交我们的镜像 比如
dockercommit-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. 声明
本文章是突然有想法想做 边做边写的 在跟着我的过程 必定会踩坑 有问题及时交流 不要骂我
如果大家比较喜欢这种方式 我会出一个简易版启动 直接拉我建立好的docker做到真正的一键端 都不需要改ip 直接一条命令启动服务器 当然可以衍生出更多的操作 比如Dockerfile里不加入COPY 在docker run的时候 用-d将tlbb文件夹挂载进去 这样更加灵活! 不明觉厉,支持支持: 天龙手游就是docer容器,这种方式虽然麻烦,但是部署好之后很方便,希望楼主能整理个详细的我要收藏备用 本帖最后由 1399123 于 2022-1-2 11:27 编辑
参考https://github.com/1995chen/dnf : 群主666 希望出详细教程 我等小白福音 如果使用这个容器岂不是可以用群晖直接挂载服务端了 安装docker的连接在此
https://docs.docker.com/engine/install/centos/
我来提取一下关键信息
按行执行以下命令
```
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
```
```
sudo yum install -y yum-utils
```
```
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
```
```
sudo yum install docker-ce docker-ce-cli containerd.io
```
```
sudo systemctl start docker
```
至此 docker就安装完毕了
可以执行docker ps查看目前运行的镜像(docker虚拟机)
然后也可以注册一个阿里云账号 选择镜像加速服务 根据系统版本选择加速服务(很好用) canai1123 发表于 2022-1-2 11:45
如果使用这个容器岂不是可以用群晖直接挂载服务端了
原则上可以 哈哈哈 要看能不能互相ping通 一键启动来了
docker pull masijun-docker.pkg.coding.net/xmsz/tlbb/tlbb-env-base:1.0
docker run -d --name tlbb-server --privileged=true -p 3306:3306 -p 7775:7775 -p 7776:7776 -v /home/tlbb/:/home/tlbb/ masijun-docker.pkg.coding.net/xmsz/tlbb/tlbb-env-base:1.0
注意端口的修改 左边端口是宿主机端口 右边是镜像端口
还有 执行这个命令前 记得把你的开服文件 放在/home/tlbb
附 run.sh记得要按我楼里说的 修改一下子 lytao 发表于 2022-1-2 17:54
一键启动来了
docker pull masijun-docker.pkg.coding.net/xmsz/tlbb/tlbb-env-base:1.0
docker run -d - ...
命令详解 -p是端口映射 docker本质也是虚拟机 在docker执行的./Server等也有端口 你要把他们的端口拿出来 我给开的都是7775和7776 你要把你的ServerInfo.ini的端口改成7776 LoginInfo.ini的端口改成7775 映射到本机的时候 你就可以改成你自己的 比如5677 5688等 这样访问宿主机ip+5677就可以访问到docker里的端口 数据库也是同样的道理 还有不会的 可以加我qq我帮你 785493116 外行人表示不知道docker是什么,,,双十一的时候买了个腾讯云的248轻量服务器,经过一个星期断断续续的边查教程边尝试操作,也成功把虚拟机里的万象端搞上了服务器。就是重装了无数遍镜像Orz...
后来把其他端复制出来上服务器,又遇见了错误,才学会使用打包命令。。。成功从一个连换端都不懂的小白,成为一个能够独立开群服的小白。但是目前仍旧没搞懂怎么使用天龙的明文补丁制作私服客户端,用可更新登陆器把补丁更新进data文件后,用其他单机登陆器会提示使用Launch开始游戏,不知道是不是还需要配套的bin还是别的原因. qqq38734811 发表于 2022-1-3 18:16
外行人表示不知道docker是什么,,,双十一的时候买了个腾讯云的248轻量服务器,经过一个星期断断续续的边 ...
如果硬要打个比方 就是 vm虚拟机对应windows系统 而docker对应linux: lytao 发表于 2022-1-4 00:16
如果硬要打个比方 就是 vm虚拟机对应windows系统 而docker对应linux
明白了,那你这服务器配置挺强了,我买的3年的腾讯248服务器,也才198,感觉小白还是直接用这个比较合适: qqq38734811 发表于 2022-1-4 09:20
明白了,那你这服务器配置挺强了,我买的3年的腾讯248服务器,也才198,感觉小白还是直接用这个比较合适: ...
好处其实是 只要配好docker环境 天龙就可以一键启动 并且多个互不干扰 跟vm一样 lytao 发表于 2022-1-4 16:54
好处其实是 只要配好docker环境 天龙就可以一键启动 并且多个互不干扰 跟vm一样
配置一键启动倒是简单,我都直接给服务器加上了开机自动启动run.sh ,也方便的,就是可能因为配置不够有时某个服务会开机启动不成功,需要关闭服务重新启动 厉害,非常有意思 感谢楼主的分享,前段时间正好在学linux运维 docker部署相关的东西,了解的还很少很少,看到这个教程瞬间特别想尝试了,弄了1个周末,可以正常玩了。 学习使我快乐。。。 :::,感谢楼主
页:
[1]
2