本帖最后由 Brett 于 2025-2-21 20:29 编辑 # X! @; X" ^- T
# h& }6 a+ [, j# S- M
《Elon's Baby》 TeleGram MiniApp商业化web3游戏服务器端完整源码! 2 a8 E8 Q. C+ N+ r' p$ i9 H' S' o
工程目录功能说明 ) X* \5 P# @$ {2 M
本项目为 Go 后端服务工程,主要提供 API 接口以及后台任务处理等功能。
, H% N# v: x5 V. j g* s
以下为工程目录下各个文件的功能说明:
% k3 H4 u5 O4 d1 B3 L
- main.go (多个): 项目入口文件,可能包含不同模块或功能的入口,例如 API 服务、后台任务服务等。请根据具体 main.go 文件的内容确定其具体职责。
- api.go, workapi.go, admin.go, platform.go:
; g4 y1 d1 S# ~# C- api.go: 定义了对外提供的通用 API 接口。
- workapi.go: 可能包含工作任务相关的 API 接口,代码量较大,推测为核心业务 API 模块。
- admin.go: 定义了后台管理系统的 API 接口,用于管理和监控服务。
- platform.go: 定义了平台相关的 API 接口,可能用于第三方平台对接或平台特有功能。) T# ~8 a& y, a8 Q0 t( y- K& O) g
- cb.go: 可能处理回调逻辑,例如第三方服务回调等。
- cf.go: Cloudflare 相关功能模块,可能用于对象存储 (R2) 或其他 Cloudflare 服务集成。
- data.go, db.go, redis.go: ?; _* l6 X" T# U0 o) M
- data.go: 数据模型定义,定义了项目中使用的数据结构。
- db.go, THkGTtrKSzpT/db.go, Zpx7ofey2Vtn/db.go: 数据库操作相关代码,包括数据库连接、查询封装等,可能使用了多个文件来组织数据库相关逻辑。
- redis.go: Redis 缓存操作相关代码。7 V& M, @7 F. U+ [
- taskq.go, worker.go, tasktype.go:
1 z( [( L: l- d* n4 P+ Z- E" E- b- taskq.go: 任务队列相关代码,用于异步任务处理。
- worker.go: 后台任务 worker 代码,负责执行任务队列中的任务。
- tasktype.go: 定义了任务类型和任务相关的数据结构。4 q5 j" D7 ]* l* i
- enum.go, errcode.go, xenv.go, gin.go, logger.go, token.go, hashid.go, tools.go, Oyg2tkK1KHo2/gin.go, IZB32Dt9c1dB/tools.go: 通用工具和配置模块。
- O% d( h: @. \5 k I! s& b- 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: 通用工具函数集合。
+ r' d$ O* L# K3 P8 Q( O. M' x
- *.json (如 ar.json, de.json, dev.json, pro.json 等):
1 R( I$ o* l# n8 I0 o w; q5 B5 s- 国际化 (i18n) 配置文件,用于存储不同语言的文本内容,例如 ar.json (阿拉伯语), de.json (德语) 等。
- dev.json, pro.json, 9wRf2lej7DHI/pro.json, u4HmsJcgPhvE/dev.json: 不同环境的配置信息,例如开发环境 (dev) 和生产环境 (pro) 的配置。
6 ~" U& V- j+ \% {" _* _. W
- *.sql (如 struct.sql, config.sql, 06HQe3ZBYds7/config.sql, eVVx4xEdHLZq/struct.sql):
2 u: J/ i7 G. }& Y3 o `, T- struct.sql, eVVx4xEdHLZq/struct.sql: 数据库结构定义 SQL 文件,用于初始化数据库表结构。
- config.sql, 06HQe3ZBYds7/config.sql: 数据库配置初始化 SQL 文件,用于插入初始配置数据。
* B# a9 F5 x- j e8 X
- docker-build.sh: Docker 镜像构建脚本,用于自动化构建 Docker 镜像。
- docker-compose.yml: Docker Compose 编排文件,用于定义和管理多容器 Docker 应用,例如本地开发和测试环境。
- go.mod (多个), go.sum: Go Modules 依赖管理文件,定义了项目依赖的 Go 模块及其版本。 y0 p- Y4 I, t3 I( W
8 y6 ~' c7 C3 ~/ m
Docker 编译、部署与运行方法
& d& _! {! D( _5 ]1 _
本项目支持使用 Docker 进行编译、部署和运行,以下是具体步骤:
9 y! L8 T" q, l0 O* n
1. 编译 Docker 镜像 ' T, r2 Z' Y: }+ p8 P) t5 N
在项目根目录下,执行 docker-build.sh 脚本即可构建 Docker 镜像。
# k. x: @) S5 m+ y' G7 X
2 p' z5 h- D5 ?
./docker-build.sh
3 \' S. k3 s# L" Y" z2 J
; r( D5 h. @* p* p( _+ R |7 X
docker-build.sh 脚本说明: 7 L5 m2 {! j$ l+ q% X
3 U2 S& Q, X6 P) U7 ?/ Z
#!/bin/sh
7 W% h2 y8 b8 {& W6 C- h$ u5 `* u
docker buildx build \ --platform=linux/arm64,linux/amd64 \ -t xxx:latest \ --push \ .
) e2 H ~, K j; n0 @8 j
+ \& X0 M5 u7 U' t( a" l1 ]
- docker buildx build: 使用 Docker Buildx 构建镜像,支持多平台构建。
- --platform=linux/arm64,linux/amd64: 指定构建支持 linux/arm64 和 linux/amd64 两种平台的镜像,实现多架构兼容。
- -t xxx:latest: 指定镜像名称和标签, 请将 xxx 替换为实际的 Docker Hub 仓库用户名或私有镜像仓库地址。 latest 标签表示最新版本。
- --push: 构建完成后自动将镜像推送到 Docker 镜像仓库。 如果不需要推送,可以移除此参数。
- .: 指定 Dockerfile 上下文为当前目录。6 S6 v6 \3 m. `! y+ W9 e4 ?
" U5 e. W! z0 u1 [0 g+ c+ D/ k
编译步骤: 5 y7 k/ H V7 N( @. d; W
- 安装 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 命令。
6 q! m3 ]; {/ N3 [1 \/ k; Y
( v7 r( q# \% H: [* H3 l6 Y
2. 部署与运行 (Docker Compose) 2 s$ @* |/ i# E5 U2 [
推荐使用 Docker Compose 进行本地开发、测试和部署。
+ e. F1 h p' y& I
- 修改 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"
- # ... 其他环境变量 ...
- 请注意替换以下内容:8 d$ Y7 O/ @% L) C \2 Z" }; j
- your-service-name: 为你的服务起一个名称。
- xxx:latest: 替换为你在 docker-build.sh 中设置的 Docker 镜像名称 (例如 yourusername/your-project:latest)。
- ports: 根据需要修改端口映射。
- environment: 配置服务运行所需的环境变量,务必根据 xenv.go 文件中的配置项进行配置,例如数据库连接信息 (DB_DSN)、Redis 连接信息 (REDIS_DSN) 等。
0 C3 m( C1 [! n+ l
* M# O' i! f" T
- 启动服务
- 在 docker-compose.yml 文件所在目录,执行以下命令启动服务:
- docker-compose up -d
+ B& r* z9 Q/ O- docker-compose up: 启动 Docker Compose 定义的服务。
- -d: 后台运行 (detached mode)。
+ ^# ^3 e1 ?: i" D, `7 i9 Y2 G
# @/ H5 y; S( T+ p
- 停止服务
- 在 docker-compose.yml 文件所在目录,执行以下命令停止服务:
- docker-compose down
- ; w5 f4 l# {! P6 j
5 H4 F% f6 \! S
3. 部署与运行 (Docker Run) 2 D$ M8 m6 }) g$ j1 g
如果你不使用 Docker Compose,也可以使用 docker run 命令直接运行 Docker 镜像。 2 O) e) ^7 r" ?1 p0 X6 N' e
0 T# I8 p6 t6 e. g
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 中构建的镜像名称一致
1 Q- e8 w, f4 Y, n- J* W
8 n @, R) P n* C& L( S8 {
请注意替换以下内容: - your-container-name: 为你的 Docker 容器起一个名称 (可选)。
- ports: 根据需要修改端口映射。
- -e ENVIRONMENT_VARIABLE=value: 使用 -e 参数设置环境变量,务必根据 xenv.go 文件中的配置项进行配置。
- xxx:latest: 替换为你在 docker-build.sh 中设置的 Docker 镜像名称。
! [7 |4 _1 W q# I8 u2 p5 _
' ` N, v h: b% I1 D4 I
4. 配置说明
+ Z0 {/ d4 z. {& i2 z# E
本项目使用环境变量进行配置管理,所有的配置项都定义在 xenv.go 文件中。
4 m1 o+ c3 x$ z5 G! x
重要的配置项包括 (但不限于):
8 q- Q- \4 E( ~# Y9 d. _
- 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# t1 {" W, Z- F2 w# k" _9 A
; v8 m, ? ^9 ^! @( y! n
配置方式:
' t" S6 W& H5 ~9 T& V- F
- Docker Compose: 在 docker-compose.yml 文件的 environment 部分配置环境变量。
- Docker Run: 使用 docker run -e VARIABLE=value 参数设置环境变量。
- 宿主机环境变量: 也可以直接在宿主机上设置环境变量,Docker 容器会自动继承宿主机的环境变量。
" G* A& w2 L- ]2 j
% C; l0 N h' `# a; _" S3 U
请根据你的实际环境和需求配置相应的环境变量。 5 X" ^$ C J4 }. H, s
———————— % v& G2 F8 l6 k9 I
如有任何问题,请参考代码注释或在Debug.pet发帖咨询,我们会在24小时内回复!
( v9 Q! g+ @5 q" M7 w, h
——————————
8 @: S, U+ F9 U3 C2 q4 ~' [
' q1 _0 p+ ^8 [; A
服务器端源码下载: |