给docker容器内配置中文环境(minecraft开服相关)
最近找到个整合包(因为懒得一个个翻bbs
https://www.bilibili.com/read/cv7403697/?spm_id_from=333.999.collection.opus.click
这包里的mod和之前自己开的服务器高度相似,太棒啦,从1.7.10直升1.12.2,基本还都是熟悉的味道
才知道mcbbs已经无了,然后才可发现mc百科已经这么好用了,连接直连发布curseforge和github,省去搬运步骤,也蛮好的!
服务端有了,想通过docker容器部署到我的群晖NAS上,DS720+扩容了根16G内存条放着也是放着
选取docker镜像
docker hub里有官方镜像,用的是这个,体积精简,只运行环境jre就够了
https://hub.docker.com/_/openjdk/tags?page=1&page_size=&name=8u342&ordering=
所以直接
1 | docker pull openjdk:8u342-jre-slim |
然后直接这样运行就好了
1 | docker run -it -d \ |
虽然长,但是总的来说挺简单,用openjdk:8u342-jre-slim
镜像运行java
命令罢了,但是!
出现了一个人让人感觉不爽的小问题,服务端的log输出以及游戏内服务端来的输出都是英文的,这在之前直接windows运行时不是这样的,所以第一反应是语言环境问题
设置环境变量
在docker run
的时候加上个参数-e LANG="zh_CN.UTF-8"
,类似export LANG=zh_CN.UTF-8
确定环境变量生效了:
但没解决问题,反而似乎导致启动的时候不认识中文的mod文件名了
在查找这个之后:docker 容器设置中文环境
发现单纯设置LANG
的变量不行,容器里就没有中文字符集的
查看已有语言
1 | locale -a |
安装中文环境
使用DockerFile的方式快速构建一个基础镜像,解决中文环境问题
所以安装中文环境的命令可以是:
1 | apt-get install -y language-pack-zh-hans |
但这样不行!因为这个是ubuntu的命令,查看我的docker镜像的信息发现是以debian基底的
1 | dpkg-reconfigure locales |
然后再选zh_CN.UTF-8
,可行,但是集成到镜像里没那么好使,还好有别的方法
制作新镜像
dockerfile
1 | FROM openjdk:8u342-jre-slim |
保存为dockerfile文件然后
1 | docker build -t jre8u342_ch . |
测试运行
1 | docker run -it -d \ |
因为dockerfile里已经设置过WORKDIR
了所以不需要-w
参数
这下不会报英文了
游戏里也是中文环境的返回信息
部署到群晖
先把做好的镜像打包出来,方便传到群晖NAS里
1 | docker save -o jre8u342_ch.tar jre8u342_ch:latest |
先导入这个镜像
然后简单配置一下端口和mc服务器目录就可以了,和上面的docker run
其实是一样的
端口的25565
是游戏端口25575
用作管理,下面会提到
服务器远程管理
用容器托管运行了,上哪去敲/op xxxx
和/stop
之类的管理命令呢?
可以用rcon方案!
https://wiki.vg/RCON
具体就是用这个软件:
https://github.com/Tiiffi/mcrcon
安装和服务端配置:
1 | git clone https://github.com/Tiiffi/mcrcon.git |
然后服务端也要配置一下,在server.properties
里的
1 | enable-rcon=false |
改为
1 | enable-rcon=true |
用法:
先连接
1 | mcrcon -H 服务器地址 -p your_passwd |
然后就可以一样敲各种minecraft管理命令了
好了不说了博主我要去挖矿开荒了
参考
debian文档,第 8 章 国际化和本地化:
https://www.debian.org/doc/manuals/debian-reference/ch08.zh-cn.html#_rationale_for_utf_8_locale
类似的打包好的docker环境MC服务器镜像有:
https://github.com/itzg/docker-minecraft-server/tree/master
对我来说功能有点多,只是参考参考