English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE คนไทย Français русский

5回答

0收藏

《Elon’s Baby》TeleGram MiniApp商业化web3游戏服务器Server端源码完整下载!

开源社区 开源社区 10865 人阅读 | 5 人回复 | 2025-02-21

本帖最后由 Brett 于 2025-2-21 20:29 编辑 # y% T# s$ O. b! J
' P- o6 i+ d+ [7 S  g4 \
《Elon's Baby》 TeleGram MiniApp商业化web3游戏服务器端完整源码!
& @7 s1 y1 _: y# ?7 Z1 e/ ?. K+ X
工程目录功能说明
( T5 C, S* O+ ]  c
本项目为 Go 后端服务工程,主要提供 API 接口以及后台任务处理等功能。

- P& F- n: S7 H# W! S
以下为工程目录下各个文件的功能说明:
7 V# J1 ~" o$ l1 L  I( Y6 j
  • main.go (多个):  项目入口文件,可能包含不同模块或功能的入口,例如 API 服务、后台任务服务等。请根据具体 main.go 文件的内容确定其具体职责。
  • api.go, workapi.go, admin.go, platform.go:. b  F2 d: v6 _( \3 a* z! }* x, [
    • api.go:  定义了对外提供的通用 API 接口。
    • workapi.go:  可能包含工作任务相关的 API 接口,代码量较大,推测为核心业务 API 模块。
    • admin.go:  定义了后台管理系统的 API 接口,用于管理和监控服务。
    • platform.go:  定义了平台相关的 API 接口,可能用于第三方平台对接或平台特有功能。5 @/ Y% ^, {8 \/ u# x, I0 ~1 `0 _2 i
  • cb.go:  可能处理回调逻辑,例如第三方服务回调等。
  • cf.go:  Cloudflare 相关功能模块,可能用于对象存储 (R2) 或其他 Cloudflare 服务集成。
  • data.go, db.go, redis.go:
    / w7 p- D% X# D7 U$ X7 _
    • data.go:  数据模型定义,定义了项目中使用的数据结构。
    • db.go, THkGTtrKSzpT/db.go, Zpx7ofey2Vtn/db.go: 数据库操作相关代码,包括数据库连接、查询封装等,可能使用了多个文件来组织数据库相关逻辑。
    • redis.go:  Redis 缓存操作相关代码。4 b2 W7 e6 O" ]
  • taskq.go, worker.go, tasktype.go:6 f1 v/ J, i( ?1 ^
    • taskq.go:  任务队列相关代码,用于异步任务处理。
    • worker.go:  后台任务 worker 代码,负责执行任务队列中的任务。
    • tasktype.go:  定义了任务类型和任务相关的数据结构。
      6 m4 v  b# X% ^3 v* E
  • enum.go, errcode.go, xenv.go, gin.go, logger.go, token.go, hashid.go, tools.go, Oyg2tkK1KHo2/gin.go, IZB32Dt9c1dB/tools.go:  通用工具和配置模块。
    9 W' C9 K7 M2 N9 ]# n! ~% Q
    • enum.go:  定义枚举类型。
    • errcode.go, AlzF66mgvcBU/errcode.go: 定义错误码。
    • xenv.go, 6uDke1TbtSZR/xenv.go:  环境变量配置加载和管理。
    • gin.go, Oyg2tkK1KHo2/gin.go:  Gin 框架相关配置和中间件。
    • logger.go, AS69LS2nuwYv/logger.go:  日志封装和配置。
    • token.go, Md9OTNf5QFL7/token.go:  Token 生成和验证相关代码。
    • hashid.go, zj21KQSuE57x/hashid.go:  Hash ID 生成和解析工具。
    • tools.go, 2wllxjAdyf7K/tools.go, IZB32Dt9c1dB/tools.go:  通用工具函数集合。
      5 i8 t, \- e6 w" G5 a5 z# t
  • *.json (如 ar.json, de.json, dev.json, pro.json 等):
    * a/ _( E6 P3 _  J/ @$ B
    • 国际化 (i18n) 配置文件,用于存储不同语言的文本内容,例如 ar.json (阿拉伯语), de.json (德语) 等。
    • dev.json, pro.json, 9wRf2lej7DHI/pro.json, u4HmsJcgPhvE/dev.json:  不同环境的配置信息,例如开发环境 (dev) 和生产环境 (pro) 的配置。
      0 w. ~. `" j& M9 U, c* m$ z6 H" q  Y
  • *.sql (如 struct.sql, config.sql, 06HQe3ZBYds7/config.sql, eVVx4xEdHLZq/struct.sql):
      w7 u4 r4 \; N/ N
    • struct.sql, eVVx4xEdHLZq/struct.sql: 数据库结构定义 SQL 文件,用于初始化数据库表结构。
    • config.sql, 06HQe3ZBYds7/config.sql: 数据库配置初始化 SQL 文件,用于插入初始配置数据。, ?: v# g: l: ~( B
  • docker-build.sh: Docker 镜像构建脚本,用于自动化构建 Docker 镜像。
  • docker-compose.yml: Docker Compose 编排文件,用于定义和管理多容器 Docker 应用,例如本地开发和测试环境。
  • go.mod (多个), go.sum: Go Modules 依赖管理文件,定义了项目依赖的 Go 模块及其版本。
    # ~+ n8 R. {8 J/ ]
. G0 S, O* u& _
Docker 编译、部署与运行方法

/ U3 @0 p- _% {$ t
本项目支持使用 Docker 进行编译、部署和运行,以下是具体步骤:

7 z: Y" `: B5 _7 y$ h  h0 w4 Q
1. 编译 Docker 镜像
) |& r, m0 T7 j, W
在项目根目录下,执行 docker-build.sh 脚本即可构建 Docker 镜像。
+ N+ u& I1 z" A

$ U# E) I% h2 D! \" B5 X
./docker-build.sh
* T! }# T! `5 @& r

$ F3 Q6 A. M  a
docker-build.sh 脚本说明:

: L, u5 q, @0 n* W
- d6 Z8 `1 M1 p  B# m( Y& C
#!/bin/sh

( u' `5 O- ?: D- X" ?0 |1 y; b5 a) ^
docker buildx build \
  --platform=linux/arm64,linux/amd64 \
  -t xxx:latest \
  --push \
  .

" [4 M9 S% H; A7 ?" ^; Y# A- q

+ u8 Y) H1 q. C1 K, i3 j0 p
  • docker buildx build: 使用 Docker Buildx 构建镜像,支持多平台构建。
  • --platform=linux/arm64,linux/amd64:  指定构建支持 linux/arm64linux/amd64 两种平台的镜像,实现多架构兼容。
  • -t xxx:latest:  指定镜像名称和标签,  请将 xxx 替换为实际的 Docker Hub 仓库用户名或私有镜像仓库地址latest 标签表示最新版本。
  • --push:  构建完成后自动将镜像推送到 Docker 镜像仓库。 如果不需要推送,可以移除此参数。
  • .:  指定 Dockerfile 上下文为当前目录。
    # s. G% }5 a0 L2 j, f
  E( N. o! ]$ r# y* |! ?$ c8 @1 B% u
编译步骤:

/ x' g, ^5 Q1 U$ }& j2 m2 y2 ~
  • 安装 Docker 和 Docker Buildx:  确保你的机器上已安装 Docker 和 Docker Buildx 插件。
  • 替换镜像名称:  修改 docker-build.sh 脚本中的 xxx:latest 为你的 Docker 镜像仓库地址和期望的镜像名称。  例如,如果你的 Docker Hub 用户名是 yourusername,可以将 -t xxx:latest 修改为 -t yourusername/your-project:latest
  • 执行构建脚本:  在项目根目录运行 ./docker-build.sh 命令。
    " B+ p# p, M+ e- |$ |' ^
. {! T2 R9 e" E$ R( s; Z
2. 部署与运行 (Docker Compose)
$ R1 a$ T" f8 x$ Y- h% F* O# Q
推荐使用 Docker Compose 进行本地开发、测试和部署。
5 [- H) \( H* r, P
  • 修改 docker-compose.yml 文件
  • 根据你的实际需求修改 docker-compose.yml 文件,例如配置端口映射、环境变量等。
  •    version: '3.8'
  •    services:
  •      your-service-name: # 请替换为你的服务名称
  •        image: xxx:latest  # 确保与 docker-build.sh 中构建的镜像名称一致
  •        ports:
  •          - "8000:8000"   # 将容器 8000 端口映射到宿主机 8000 端口
  •        environment:       # 配置环境变量,参考 xenv.go 中的配置项
  •          PORT: 8000
  •          DB_DSN: "your_db_dsn"
  •          REDIS_DSN: "your_redis_dsn"
  •          # ... 其他环境变量 ...
  • 请注意替换以下内容:9 L; k% n/ U4 z
    • your-service-name:  为你的服务起一个名称。
    • xxx:latest:  替换为你在 docker-build.sh 中设置的 Docker 镜像名称 (例如 yourusername/your-project:latest)。
    • ports:  根据需要修改端口映射。
    • environment:  配置服务运行所需的环境变量,务必根据 xenv.go 文件中的配置项进行配置,例如数据库连接信息 (DB_DSN)、Redis 连接信息 (REDIS_DSN) 等。, C- V9 N2 Q  U

- x5 L" M# k! n' u& r
  • 启动服务
  • docker-compose.yml 文件所在目录,执行以下命令启动服务:
  •    docker-compose up -d
  • ; U" V; G4 n9 P
    • docker-compose up:  启动 Docker Compose 定义的服务。
    • -d:  后台运行 (detached mode)。: j2 L$ o! V9 U# r/ C" F- o4 y  m
/ S, w* j1 t  x% L6 v+ N5 p7 P
  • 停止服务
  • docker-compose.yml 文件所在目录,执行以下命令停止服务:
  •    docker-compose down
  • - H; f7 I) k) x/ {) F, R6 p+ h

. R6 C& B3 j' A1 R; R8 L1 ~. q2 J
3. 部署与运行 (Docker Run)

0 t1 s2 a6 j- p; B: G' K
如果你不使用 Docker Compose,也可以使用 docker run 命令直接运行 Docker 镜像。

3 ^- `& Y/ I- d
  b: ]$ Q$ r5 a5 O, Q' `
docker run \
  -d \
  -p 8000:8000 \
  --name your-container-name \ # 可选,为容器命名
  -e PORT=8000 \             # 设置环境变量,根据 xenv.go 配置
  -e DB_DSN="your_db_dsn" \
  -e REDIS_DSN="your_redis_dsn" \
  # ... 其他环境变量 ... \
  xxx:latest # Docker 镜像名称,与 docker-build.sh 中构建的镜像名称一致
& @4 h) A& {* t! h9 t

# r$ i; y( t, k! e# a
请注意替换以下内容:
  • your-container-name:  为你的 Docker 容器起一个名称 (可选)。
  • ports:  根据需要修改端口映射。
  • -e ENVIRONMENT_VARIABLE=value:  使用 -e 参数设置环境变量,务必根据 xenv.go 文件中的配置项进行配置
  • xxx:latest:  替换为你在 docker-build.sh 中设置的 Docker 镜像名称。* O) ~, [& p) h* n
  g) c: s& x$ X8 B
4. 配置说明

! V- H2 A7 h; X, l0 V9 {
本项目使用环境变量进行配置管理,所有的配置项都定义在 xenv.go 文件中。

/ j  P: H+ s- O5 ]" M/ \4 P
重要的配置项包括 (但不限于):
0 m" o/ E% A1 \7 O7 g
  • PORT:  服务监听端口。
  • DB_DSN:  数据库连接字符串 (Data Source Name)。
  • REDIS_DSN:  Redis 连接字符串。
  • HASH_SALT:  用于密码哈希的盐值。
  • IS_DEBUG:  是否开启 Debug 模式。
  • IS_DB_TRACE:  是否开启数据库 SQL 追踪日志。
  • CfAccountId, CfBucket, CfKey, CfSecret, CfDomain: Cloudflare R2 对象存储相关配置。
  • ... 以及 xenv.go 中定义的其他环境变量 ...
    & h- H1 J, n. a' h4 N: A( W! P
1 K" r, K3 ~+ I3 G, m$ M& I% r. K
配置方式:

/ Y2 g' e: N+ O' ~4 o7 `) C
  • Docker Compose:docker-compose.yml 文件的 environment 部分配置环境变量。
  • Docker Run:  使用 docker run -e VARIABLE=value 参数设置环境变量。
  • 宿主机环境变量:  也可以直接在宿主机上设置环境变量,Docker 容器会自动继承宿主机的环境变量。
    ! _) i: a/ Y0 ^- W

8 L7 C  d& ^$ s2 p6 A/ N
请根据你的实际环境和需求配置相应的环境变量。

6 Z3 w( N3 V  |& T) W
————————

* H- J: n& n* e  L' e2 q' l
如有任何问题,请参考代码注释或在Debug.pet发帖咨询,我们会在24小时内回复!
/ e0 U, d# ?- I- w
——————————

) H8 |$ w& e$ i+ F2 G

4 W, e# {5 n" n
服务器端源码下载:
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:

回答|共 5 个

Gavin

发表于 2025-2-24 16:17:55 | 显示全部楼层

很棒的分享

imlaoxu

发表于 2025-2-24 18:04:40 | 显示全部楼层

感谢分享

riyad

发表于 2025-2-24 21:19:19 | 显示全部楼层

感谢分享

admin

发表于 2025-2-26 15:51:51 | 显示全部楼层

good

mufan

发表于 2025-3-10 17:24:26 | 显示全部楼层

感谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则