Sign inSign up

ly6610115/dnf

By ly6610115

Updated over 4 years ago

Image
0

202

ly6610115/dnf repository overview

地下城与勇士容器版本

注意事项

不支持Windows

关闭防火墙

# 关闭宿主机防火墙
# Centos5-6
service iptables stop
chkconfig iptables off
# Centos7
systemctl disable firewalld
systemctl stop firewalld
systemctl disable firewalld.service
systemctl stop firewalld.service
# ubuntu
sudo ufw disable

Centos需要关闭SELINUX(建议永久关闭)

修改/etc/sysconfig/selinux文件
将文件内的SELINUX设置为disabled就可以了。记得重启服务器。

开启SWAP(机器内存大于8G可忽略这一步)

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=8000
mkswap /var/swap.1
swapon /var/swap.1
sed -i '$a /var/swap.1 swap swap default 0 0' /etc/fstab

镜像拉取

docker pull 1995chen/dnf:stable

docker启动

# 懒人启动方式
# 自定义其中环境变量所有的环境变量都是可以改的

# 初始化[改脚本运行时间较长,可能要10多分钟,主要是将sql导入数据库]
# 将root密码重置为DNF_DB_ROOT_PASSWORD
docker run --rm -e DNF_DB_ROOT_PASSWORD=88888888 -v /data/log:/home/neople/game/log -v /data/mysql:/var/lib/mysql -v /data/data:/data 1995chen/dnf:stable /bin/bash /home/template/init/init.sh

# 遇到CoreDump就多跑几次,机器内存不足容易OOM建议上8G的交换空间
# 使用该DNF_DB_ROOT_PASSWORD密码给game账户赋予权限,设置其只允许本地访问增加安全性
docker run -d -e PUBLIC_IP=x.x.x.x -e DNF_DB_ROOT_PASSWORD=88888888 -e GM_ACCOUNT=gm_user -e GM_PASSWORD=gm_pass -v /data/log:/home/neople/game/log -v /data/mysql:/var/lib/mysql -v /data/data:/data -p 3000:3306/tcp -p 7600:7600/tcp -p 881:881/tcp -p 20303:20303/tcp -p 20303:20303/udp -p 20403:20403/tcp -p 20403:20403/udp -p 40403:40403/tcp -p 40403:40403/udp -p 7000:7000/tcp -p 7000:7000/udp -p 7001:7001/tcp -p 7001:7001/udp -p 7200:7200/tcp -p 7200:7200/udp -p 10011:10011/tcp -p 31100:31100/tcp -p 30303:30303/tcp -p 30303:30303/udp -p 30403:30403/tcp -p 30403:30403/udp -p 10052:10052/tcp -p 20011:20011/tcp -p 20203:20203/tcp -p 20203:20203/udp -p 30703:30703/udp -p 11011:11011/udp -p 2311-2313:2311-2313/udp -p 30503:30503/udp -p 11052:11052/udp --cpus=1 --memory=1g --memory-swap=-1 --shm-size=8g 1995chen/dnf:stable

docker-compose启动

version: "2.3"

networks:
  local:
    ipam:
      config:
        - subnet: 172.20.0.0/16

services:
  init-dnf:
    image: 1995chen/dnf:stable
    environment:
      - TZ=Asia/Shanghai
      # 数据库root密码[首次初始化会修改root密码]
      - DNF_DB_ROOT_PASSWORD=88888888
    command: ['/bin/bash', '/home/template/init/init.sh']
    networks:
      - local
    restart: "no"
    volumes:
      - ./data:/data
      - ./mysql:/var/lib/mysql
  dnf:
    image: 1995chen/dnf:stable
    depends_on:
      - init-dnf
    environment:
      - TZ=Asia/Shanghai
      # 这里填写你的IP地址
      - PUBLIC_IP=127.0.0.1
      # 数据库root密码
      - DNF_DB_ROOT_PASSWORD=88888888
      - GM_ACCOUNT=gm_user
      - GM_PASSWORD=gm_pass
    shm_size: 8g
    memswap_limit: -1
    mem_limit: 1g
    cpu_count: 1
    networks:
      - local
    restart: always
    ports:
      - 3000:3306/tcp       # mysql 数据库
      - 7600:7600/tcp       # DnfGateServe 网关
      - 881:881/tcp         # DnfGateServe 网关
      - 20303:20303/tcp     # df_dbmw_r
      - 20303:20303/udp     # df_dbmw_r
      - 20403:20403/tcp     # df_dbmw_r
      - 20403:20403/udp     # df_dbmw_r
      - 40403:40403/tcp     # df_manager_r
      - 40403:40403/udp     # df_manager_r
      - 7000:7000/tcp       # df_bridge_r
      - 7000:7000/udp       # df_bridge_r
      - 7001:7001/tcp       # df_channel_r
      - 7001:7001/udp       # df_channel_r
      - 7200:7200/tcp       # df_relay_r
      - 7200:7200/udp       # df_relay_r
      - 10011:10011/tcp     # df_game_r
      - 31100:31100/tcp     # df_community
      - 30303:30303/tcp     # df_monitor_r
      - 30303:30303/udp     # df_monitor_r
      - 30403:30403/tcp     # df_guild_r
      - 30403:30403/udp     # df_guild_r
      - 10052:10052/tcp     # df_game_r
      - 20011:20011/tcp     # df_game_r
      - 20203:20203/tcp     # df_dbmw_r
      - 20203:20203/udp     # df_dbmw_r
      - 30703:30703/udp     # df_coserver_r
      - 11011:11011/udp     # df_game_r
      - 2311-2313:2311-2313/udp   # df_stun_r
      - 30503:30503/udp     # df_statics_r
      - 11052:11052/udp     # df_game_r
    volumes:
      - ./data:/data
      - ./mysql:/var/lib/mysql
      - ./log:/home/neople/game/log

K8S 启动

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: dnf
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10G

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: dnf
data:
  dnf_public_ip: 192.168.0.203

---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: dnf
data:
  mysql_root_password: ODg4ODg4ODg=
  gm_account: Y2hlbmxpYW5n
  gm_password: RGFuZGFuMjY5MTMy

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dnf
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dnf
  template:
    metadata:
      labels:
        app: dnf
    spec:
      restartPolicy: Always
      nodeName: centos-02
      volumes:
      - name: dnf
        persistentVolumeClaim:
          claimName: dnf
      - name: memory
        emptyDir:
          medium: Memory
          sizeLimit: 8Gi

      initContainers:
      - name: init-data
        env:
        - name: TZ
          value: "Asia/Shanghai"
        - name: DNF_DB_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              key: mysql_root_password
              name: dnf
        image: 1995chen/dnf:stable
        imagePullPolicy: IfNotPresent
        command: ["/bin/bash"]
        args: ["/home/template/init/init.sh"]
        volumeMounts:
        - mountPath: /data
          name: dnf
          subPath: data
        - mountPath: /var/lib/mysql
          name: dnf
          subPath: mysql
      containers:
      - name: dnf
        imagePullPolicy: IfNotPresent
        image: 1995chen/dnf:stable
        ports:
        - name: mysql
          containerPort: 3306
          protocol: TCP
          hostPort: 3000 
        - name: gate-tcp1
          containerPort: 7600
          protocol: TCP
          hostPort: 7600
        - name: gate-tcp2
          containerPort: 881
          protocol: TCP
          hostPort: 881
        - name: dbmw-tcp1
          containerPort: 20303
          protocol: TCP
          hostPort: 20303
        - name: dbmw-tcp2
          containerPort: 20403
          protocol: TCP
          hostPort: 20403
        - name: dbmw-tcp3
          containerPort: 20203
          protocol: TCP
          hostPort: 20203
        - name: dbmw-udp1
          containerPort: 20403
          protocol: UDP
          hostPort: 20403
        - name: dbmw-udp2
          containerPort: 20303
          protocol: UDP
          hostPort: 20303
        - name: dbmw-udp3
          containerPort: 20203
          protocol: UDP
          hostPort: 20203
        - name: manager-tcp1
          containerPort: 40403
          protocol: TCP
          hostPort: 40403
        - name: manager-udp1
          containerPort: 40403
          protocol: UDP
          hostPort: 40403
        - name: bridge-tcp1
          containerPort: 7000
          protocol: TCP
          hostPort: 7000
        - name: bridge-udp1
          containerPort: 7000
          protocol: UDP
          hostPort: 7000
        - name: channel-tcp1
          containerPort: 7001
          protocol: TCP
          hostPort: 7001
        - name: channel-udp1
          containerPort: 7001
          protocol: UDP
          hostPort: 7001
        - name: game-tcp1
          containerPort: 10011
          protocol: TCP
          hostPort: 10011
        - name: game-tcp2
          containerPort: 10052
          protocol: TCP
          hostPort: 10052
        - name: game-tcp3
          containerPort: 20011
          protocol: TCP
          hostPort: 20011
        - name: game-udp1
          containerPort: 11011
          protocol: UDP
          hostPort: 11011
        - name: game-udp2
          containerPort: 11052
          protocol: UDP
          hostPort: 11052
        - name: community-tcp1
          containerPort: 31100
          protocol: TCP
          hostPort: 31100
        - name: monitor-tcp1
          containerPort: 30303
          protocol: TCP
          hostPort: 30303
        - name: monitor-udp1
          containerPort: 30303
          protocol: UDP
          hostPort: 30303
        - name: relay-tcp1
          containerPort: 7200
          protocol: TCP
          hostPort: 7200
        - name: relay-udp1
          containerPort: 7200
          protocol: UDP
          hostPort: 7200
        - name: guild-tcp1
          containerPort: 30403
          protocol: TCP
          hostPort: 30403
        - name: guild-udp1
          containerPort: 30403
          protocol: UDP
          hostPort: 30403
        - name: coserver-udp1
          containerPort: 30703
          protocol: UDP
          hostPort: 30703
        - name: stun-udp1
          containerPort: 2311
          protocol: UDP
          hostPort: 2311
        - name: stun-udp2
          containerPort: 2312
          protocol: UDP
          hostPort: 2312
        - name: stun-udp3
          containerPort: 2313
          protocol: UDP
          hostPort: 2313
        - name: statics-udp1
          containerPort: 30503
          protocol: UDP
          hostPort: 30503
        env:
        - name: TZ
          value: "Asia/Shanghai"
        - name: PUBLIC_IP
          valueFrom:
            configMapKeyRef:
              key: dnf_public_ip
              name: dnf
        - name: DNF_DB_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              key: mysql_root_password
              name: dnf
        - name: GM_ACCOUNT
          valueFrom:
            secretKeyRef:
              key: gm_account
              name: dnf
        - name: GM_PASSWORD
          valueFrom:
            secretKeyRef:
              key: gm_password
              name: dnf
        volumeMounts:
        - mountPath: /data
          name: dnf
          subPath: data
        - mountPath: /var/lib/mysql
          name: dnf
          subPath: mysql
        - mountPath: /home/neople/game/log
          name: dnf
          subPath: log
        - mountPath: /dev/shm
          name: memory

接下来的操作

当PUBLIC_IP修改时,程序会自动修改,不需要手工做其他操作。 当数据库root密码修改时,下次要重新启动时DNF_DB_ROOT_PASSWORD使用最新的root密码

源码地址

https://github.com/1995chen/dnf

申明

亲测可用,不喜勿喷。 虽然支持外网,但是千万别拿来开服。只能拿来学习使用

Tag summary

Content type

Image

Digest

Size

540.6 MB

Last updated

over 4 years ago

docker pull ly6610115/dnf:centos7-latest