部署
1. 依赖服务
| 服务 | 版本 | 说明 |
|---|---|---|
| MySQL | 5.7+ / 8.x | 数据存储 |
| Redis | 7.x | 缓存/会话 |
2. 二进制部署
编译
bash
# 下载依赖
go mod tidy
# 编译
go build -o youlai-gin main.go部署
上传二进制与 configs/ 到服务器(示例 /opt/youlai-gin):
bash
/opt/youlai-gin/
├── youlai-gin # 二进制文件
└── configs/
└── prod.yaml # 生产环境配置启动
bash
chmod +x ./youlai-gin
export APP_ENV=prod
./youlai-ginsystemd 服务
创建服务文件 /etc/systemd/system/youlai-gin.service:
ini
[Unit]
Description=Youlai Gin Service
After=network.target
[Service]
Type=simple
User=app
WorkingDirectory=/opt/youlai-gin
Environment=APP_ENV=prod
ExecStart=/opt/youlai-gin/youlai-gin
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target启动服务:
bash
systemctl daemon-reload
systemctl start youlai-gin
systemctl enable youlai-gin3. Docker 部署
构建镜像
bash
docker build -t youlai-gin:latest .运行容器
bash
docker run -d --name youlai-gin \
-p 8000:8000 \
-e APP_ENV=prod \
-e APP_DATABASE_HOST=mysql \
-e APP_REDIS_HOST=redis \
youlai-gin:latestDocker Compose
yaml
version: '3.8'
services:
youlai-gin:
image: youlai-gin:latest
container_name: youlai-gin
restart: unless-stopped
ports:
- "8000:8000"
environment:
- APP_ENV=prod
- APP_DATABASE_HOST=mysql
- APP_DATABASE_PASSWORD=123456
- APP_REDIS_HOST=redis
volumes:
- ./logs:/app/logs
depends_on:
- mysql
- redis
mysql:
image: mysql:8.0
container_name: youlai-mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: youlai_admin
volumes:
- mysql_data:/var/lib/mysql
- ./scripts/mysql/youlai_admin.sql:/docker-entrypoint-initdb.d/init.sql
redis:
image: redis:7-alpine
container_name: youlai-redis
volumes:
mysql_data:启动:
bash
docker-compose up -d4. Nginx 反向代理
nginx
upstream youlai_backend {
server 127.0.0.1:8000;
}
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://youlai_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# WebSocket 支持
location /ws {
proxy_pass http://youlai_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}5. 健康检查
bash
# 健康检查接口
curl http://localhost:8000/api/v1/health
# 响应
{"code":"00000","msg":"操作成功","data":{"status":"UP"}}6. Swagger 文档
访问地址:http://localhost:8000/swagger/index.html
7. 配置覆盖
通过环境变量覆盖配置:
bash
# 数据库配置
export APP_DATABASE_HOST=192.168.1.100
export APP_DATABASE_PORT=3306
export APP_DATABASE_USERNAME=root
export APP_DATABASE_PASSWORD=your-password
# Redis 配置
export APP_REDIS_HOST=192.168.1.101
export APP_REDIS_PASSWORD=your-redis-password
# JWT 配置
export APP_SECURITY_JWT_SECRETKEY=your-secret-key
# 启动
./youlai-gin8. 日志管理
日志路径
logs/
├── prod.log # 应用日志
└── prod-error.log # 错误日志日志查看
bash
# 实时查看
tail -f logs/prod.log
# 搜索错误
grep "ERROR" logs/prod.log
# Docker 日志
docker logs -f youlai-gin相关文件
| 文件 | 说明 |
|---|---|
Dockerfile | Docker 镜像构建 |
configs/prod.yaml | 生产环境配置 |
scripts/mysql/youlai_admin.sql | 数据库初始化脚本 |
