在docker容器中修改系统时间的方法
其实在容器中是不能修改改系统时间,只能使用一个命令行工具来欺骗让这个程序认为是在这个这个时间内
问题是这样的,应为CentOS已经没有提供系统补丁了,心里作怪就喜欢把游戏跑在乌班图上,但是发现乌班图很难编译otp_src_19.3.tar.gz这个包
然后找了使用Almalinux 8.10 容器来部署九州谕H5 还有 梦幻契约H5 这两款游戏都是同样的前后太服务
下面贴一下豆包的 解决办法
一、环境准备:安装依赖工具
OTP 编译依赖多种开发库和工具,需先通过dnf安装。AlmaLinux 8 的部分开发包位于CRB仓库(原 PowerTools),需先启用。
1. 启用必要仓库
# 启用CRB仓库(包含部分开发依赖)
sudo dnf config-manager --set-enabled crb
# 更新系统包索引
sudo dnf update -y
2. 安装基础开发工具及依赖
# 安装开发工具组(包含gcc、make等)
sudo dnf groupinstall -y "Development Tools"
# 安装OTP编译必需的依赖库
sudo dnf install -y \
glibc-devel \
ncurses-devel \
openssl-devel \
unixODBC-devel \
libxslt-devel \
java-1.8.0-openjdk-devel \
libyaml-devel \
libuuid-devel \
zlib-devel
https://cloud.189.cn/t/vyqAzij22iqi(访问码:v6sn)
吧这个依赖解压后的动态库文件保存到 /usr/lib64 然后执行 sudo ldconfig
下面是关键比编译更头疼应为无法使用正常的办法修改系统时间,只能使用欺骗的手法来欺骗应用程序
要让 shell 脚本中的程序认为当前时间是2024-06-01 10:00:00,可以通过时间虚拟化工具或修改程序运行时的环境变量实现。以下是两种常用方法:
步骤 1:安装faketime
AlmaLinux 8 中可通过 EPEL 仓库安装:
sudo dnf install -y epel-release# 若未启用EPEL
sudo dnf install -y libfaketime
faketime "2024-06-01 10:00:00" bash123.sh
123.sh是运行服务的脚本应为 erl运行加载了限制启动的模块
在一下路径创建一个脚本这个脚本创建以后放到下面的路径
start1.sh --->
#!/bin/bash
#这个游戏非常的恶心全局环境变量还会失效
source /etc/profile
#erl程序的路径
export PATH=$PATH:/usr/local/erl/lib/erlang/bin
faketime "2024-06-01 10:00:00" bash ./start.sh
#---end------------------------------------------------------
把里面原来start.sh修稿时间的代码注释掉或删除掉
/data/qudaoljkf17.yyhx.suyougame.cn/game/script
/data/qudaolj1603.yyhx.suyougame.cn/game/script
/data/qudaolj1604.yyhx.suyougame.cn/game/script
/data/qudaolj1605.yyhx.suyougame.cn/game/script
/data/qudaolj1606.yyhx.suyougame.cn/game/script
更改后的启动命令
cd /data/qudaoljkf17.yyhx.suyougame.cn/game/script && nohup ./start1.sh >> output 2>&1 &
启动一区:
cd /data/qudaolj1603.yyhx.suyougame.cn/game/script && nohup ./start1.sh >> output 2>&1 &
启动二区:
cd /data/qudaolj1604.yyhx.suyougame.cn/game/script && nohup ./start1.sh >> output 2>&1 &
启动三区:
cd /data/qudaolj1605.yyhx.suyougame.cn/game/script && nohup ./start1.sh >> output 2>&1 &
启动四区:
cd /data/qudaolj1606.yyhx.suyougame.cn/game/script && nohup ./start1.sh >> output 2>&1 &
在docker容器中修改系统时间的方法
页:
[1]