2022-10-03 03:46:09 +08:00
|
|
|
## 使用 gofiber 作为 http 服务框架
|
|
|
|
|
2022-10-03 15:10:03 +08:00
|
|
|
## 编译环境
|
|
|
|
**因使用了 xorm.io/reverse**
|
|
|
|
### windows 环境下 需要安装 gcc 环境
|
|
|
|
>
|
|
|
|
> Mingw
|
|
|
|
> 可前往 [(mingw仓库)](https://sourceforge.net/projects/mingw-w64/files/mingw-w64/)
|
|
|
|
>
|
|
|
|
> 下载 x86_64-posix-seh
|
|
|
|
>
|
|
|
|
> 解压后将 bin 目录 添加到环境变量
|
|
|
|
>
|
|
|
|
> 重启生效即可
|
2022-10-03 03:46:09 +08:00
|
|
|
|
2022-10-03 15:10:03 +08:00
|
|
|
### 验证是否安装 gcc
|
|
|
|
```shell
|
|
|
|
gcc -v
|
|
|
|
````
|
|
|
|
|
|
|
|
## 一键初始化项目
|
|
|
|
```shell
|
|
|
|
go generate -x init.go
|
|
|
|
```
|
|
|
|
|
|
|
|
## xorm
|
|
|
|
### 从结构体 同步 数据库表结构
|
|
|
|
**User表为例**
|
|
|
|
```shell
|
|
|
|
go test ./model/user/generate -v
|
|
|
|
```
|
|
|
|
|
|
|
|
### 从 数据库 反向同步 数据库结构
|
|
|
|
**部分类型 如: bool 可能需要手动处理**
|
|
|
|
```shell
|
|
|
|
go generate ./model/user/reverse_generate.go
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 手动初始化
|
|
|
|
#### swagger
|
|
|
|
##### 安装
|
|
|
|
```shell
|
|
|
|
go install github.com/swaggo/swag/cmd/swag@latest
|
|
|
|
```
|
|
|
|
|
|
|
|
##### 生成 swagger 文档
|
|
|
|
```shell
|
2022-10-04 13:06:13 +08:00
|
|
|
# --parseInternal 解析内部依赖包,默认值: false
|
|
|
|
# --parseDependency 解析外部依赖包,默认值: false
|
|
|
|
# --parseDepth 解析依赖包深度,默认值:100
|
2022-10-05 16:02:09 +08:00
|
|
|
# swag init --parseDependency --parseInternal
|
|
|
|
|
|
|
|
# 简写
|
|
|
|
swag i -pd --parseInternal
|
|
|
|
|
2022-10-03 15:10:03 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
#### air 热重载
|
|
|
|
|
|
|
|
##### 安装
|
2022-10-03 03:46:09 +08:00
|
|
|
```shell
|
|
|
|
go install github.com/cosmtrek/air@latest
|
|
|
|
```
|
2022-10-03 15:10:03 +08:00
|
|
|
配置文件 .air.toml
|
2022-10-03 03:46:09 +08:00
|
|
|
|
2022-10-03 15:10:03 +08:00
|
|
|
## 运行项目
|
|
|
|
### 热重载
|
2022-10-03 03:46:09 +08:00
|
|
|
```shell
|
|
|
|
air
|
2022-10-03 15:10:03 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
### 直接运行
|
|
|
|
```shell
|
|
|
|
go run ./main.go
|
|
|
|
```
|
|
|
|
|
|
|
|
### 编译运行
|
|
|
|
```shell
|
|
|
|
go build
|
|
|
|
```
|
|
|
|
|
|
|
|
## 所需依赖服务 环境
|
|
|
|
*建议通过 portainer 部署*
|
|
|
|
### Portainer
|
|
|
|
```shell
|
|
|
|
sudo docker run -d -p 9000:9000 --name portainer --restart always\
|
|
|
|
-v /var/run/docker.sock:/var/run/docker.sock\
|
|
|
|
-v /opt/portainer/data:/data\
|
|
|
|
portainer/portainer-ce
|
|
|
|
```
|
|
|
|
|
|
|
|
### Redis
|
|
|
|
```yaml
|
|
|
|
version: '3.4'
|
|
|
|
|
|
|
|
services:
|
|
|
|
redis_master:
|
|
|
|
container_name: redis-master
|
|
|
|
image: redis:latest
|
|
|
|
restart: always
|
|
|
|
command: /etc/redis/redis.conf --appendonly yes --requirepass "12341234"
|
|
|
|
ports:
|
|
|
|
- "6379:6379"
|
|
|
|
volumes:
|
|
|
|
- "/opt/redis/data:/data"
|
|
|
|
- "/opt/redis/redis.conf:/etc/redis/redis.conf"
|
|
|
|
```
|
|
|
|
|
|
|
|
### Mysql
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
version: "3.4"
|
|
|
|
x-environment: &environment
|
|
|
|
environment:
|
|
|
|
- MYSQL_PORT_3306_TCP_ADDR=mysql
|
|
|
|
- MYSQL_ROOT_HOST=%
|
|
|
|
- MYSQL_ROOT_PASSWORD=12341234
|
|
|
|
|
|
|
|
services:
|
|
|
|
mysql:
|
|
|
|
container_name: mysql
|
|
|
|
image: mysql/mysql-server:8.0
|
|
|
|
ports:
|
|
|
|
- "3306:3306"
|
|
|
|
restart: always
|
|
|
|
<<: *environment
|
|
|
|
volumes:
|
|
|
|
- /opt/mysql/data:/var/lib/mysql
|
2022-10-03 03:46:09 +08:00
|
|
|
```
|