使用ubuntu18.04构建
Dockerfile文件内容
FROM ubuntu:18.04
ENV UID=999 \
# 组名
GROUP_NAME=jiangjiali \
# 用户名
USER_NAME=jiangjiali \
# 运行端口
PORT_TCP=20013 \
PORT_UDP=20015 \
# 环境变量
KBE_DT=10s \
KBE_ROOT=/var/lib/kbengine
ENV KBE_RES_PATH $KBE_ROOT/kbe/res/:$KBE_ROOT/assets:$KBE_ROOT/assets/res/:$KBE_ROOT/assets/scripts/
ENV KBE_BIN_PATH $KBE_ROOT/kbe/bin/server
# 添加脚本
ADD *.sh /
RUN set -eux; \
# 首先添加我们的用户和组,以确保它们的id得到一致的分配,而不管添加了什么依赖项
groupadd --gid $UID --system $GROUP_NAME; \
useradd --uid $UID --system --gid $GROUP_NAME --home-dir $KBE_ROOT $USER_NAME; \
mkdir -p $KBE_ROOT; \
chown -R $USER_NAME:$GROUP_NAME $KBE_ROOT; \
# 添加源地址
sed -i 's/archive.ubuntu.com/mirrors.cloud.tencent.com/g' /etc/apt/sources.list; \
sed -i 's/security.ubuntu.com/mirrors.cloud.tencent.com/g' /etc/apt/sources.list; \
# 更新系统
apt-get update; \
apt-get upgrade -y; \
# 安装基础工具
apt-get install -y --no-install-recommends \
libmysqlclient-dev \
tzdata \
telnet \
; \
rm -rf /var/lib/apt/lists/*; \
# 清除系统缓存
apt clean; \
apt autoremove --purge; \
# 内核优化
echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf; \
echo "net.ipv4.conf.default.rp_filter = 1" >> /etc/sysctl.conf; \
echo "net.ipv4.conf.default.accept_source_route = 0" >> /etc/sysctl.conf; \
echo "kernel.sysrq = 0" >> /etc/sysctl.conf; \
echo "kernel.core_uses_pid = 1" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf; \
echo "kernel.msgmnb = 65536" >> /etc/sysctl.conf; \
echo "kernel.msgmax = 65536" >> /etc/sysctl.conf; \
echo "kernel.shmmax = 68719476736" >> /etc/sysctl.conf; \
echo "kernel.shmall = 4294967296" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_max_tw_buckets = 6000" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_sack = 1" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_window_scaling = 1" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_rmem = 4096 87380 4194304" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_wmem = 4096 16384 4194304" >> /etc/sysctl.conf; \
echo "net.core.somaxconn = 262144" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_max_syn_backlog = 262144" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_timestamps = 0" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_synack_retries = 1" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_syn_retries = 1" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_fin_timeout = 1" >> /etc/sysctl.conf; \
echo "net.ipv4.tcp_keepalive_time = 1200" >> /etc/sysctl.conf; \
echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf; \
echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf; \
echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf; \
echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf; \
echo "net.ipv6.conf.default.disable_ipv6=1" >> /etc/sysctl.conf; \
echo "net.ipv6.conf.lo.disable_ipv6=1" >> /etc/sysctl.conf; \
echo "fs.file-max=6815744" >> /etc/sysctl.conf; \
echo "fs.aio-max-nr=1048576" >> /etc/sysctl.conf; \
echo "debug.exception-trace = 0" >> /etc/sysctl.conf; \
echo "debug.kprobes-optimization = 0" >> /etc/sysctl.conf; \
sysctl -p; \
# 安全限制优化
echo "* soft memlock unlimited" >> /etc/security/limits.conf; \
echo "* hard memlock unlimited" >> /etc/security/limits.conf; \
echo "* soft core unlimited" >> /etc/security/limits.conf; \
echo "* hard core unlimited" >> /etc/security/limits.conf; \
echo "* soft nproc 1000000" >> /etc/security/limits.conf; \
echo "* hard nproc 1000000" >> /etc/security/limits.conf; \
echo "* soft nofile 1000000" >> /etc/security/limits.conf; \
echo "* hard nofile 1000000" >> /etc/security/limits.conf; \
echo "* soft memlock 32000" >> /etc/security/limits.conf; \
echo "* hard memlock 32000" >> /etc/security/limits.conf; \
echo "* soft msgqueue 8192000" >> /etc/security/limits.conf; \
echo "* hard msgqueue 8192000" >> /etc/security/limits.conf; \
# 脚本权限
chmod 777 /start.sh
# 服务器脚本和资源挂载目录
VOLUME ["$KBE_ROOT"]
# 设置工作目录
WORKDIR $KBE_ROOT/assets
# 映射端口
EXPOSE $PORT_TCP
EXPOSE $PORT_UDP
CMD /start.sh
start.sh文件内容
#!/bin/bash
echo KBE_DT = \"${KBE_DT}\"
echo KBE_ROOT = \"${KBE_ROOT}\"
echo KBE_RES_PATH = \"${KBE_RES_PATH}\"
echo KBE_BIN_PATH = \"${KBE_BIN_PATH}\"
start(){
$KBE_BIN_PATH/machine --cid=2129652375332859700 --gus=1&
$KBE_BIN_PATH/logger --cid=1129653375331859700 --gus=2&
$KBE_BIN_PATH/interfaces --cid=1129652375332859700 --gus=3&
$KBE_BIN_PATH/dbmgr --cid=3129652375332859700 --gus=4&
$KBE_BIN_PATH/baseappmgr --cid=4129652375332859700 --gus=5&
$KBE_BIN_PATH/cellappmgr --cid=5129652375332859700 --gus=6&
$KBE_BIN_PATH/baseapp --cid=6129652375332859700 --gus=7&
$KBE_BIN_PATH/cellapp --cid=7129652375332859700 --gus=8&
$KBE_BIN_PATH/loginapp --cid=8129652375332859700 --gus=9
}
stop(){
pkill -9 machine>/dev/null
pkill -9 logger>/dev/null
pkill -9 interfaces>/dev/null
pkill -9 dbmgr>/dev/null
pkill -9 baseappmgr>/dev/null
pkill -9 cellappmgr>/dev/null
pkill -9 baseapp>/dev/null
pkill -9 cellapp>/dev/null
pkill -9 loginapp>/dev/null
}
while true; do
stop
sleep $KBE_DT
start
echo 'BaseApp is Unexpected Exit!!!!!'
done
# 关闭
docker exec -it kbe /bin/bash
cd /var/lib/kbengine/assets/ && ./safa_kill.sh && exit
docker stop kbe
# 重启
docker exec -it kbe /bin/bash
cd /var/lib/kbengine/assets/ && ./safa_kill.sh && ./start_server.sh
# 修改/var/kbe/assets/res/server/kbengine.xml
<baseapp>
<backupPeriod> 500 </backupPeriod>
<externalAddress> 服务器地址 </externalAddress>
</baseapp>
Content type
Image
Digest
sha256:cdfbb1a41…
Size
38.5 MB
Last updated
over 1 year ago
docker pull jiangjiali/kbengine:1.0.0