Skip to content

部署

1. 依赖服务

服务版本说明
MySQL5.7+ / 8.x数据存储
Redis7.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-gin

systemd 服务

创建服务文件 /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-gin

3. 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:latest

Docker 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 -d

4. 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-gin

8. 日志管理

日志路径

logs/
├── prod.log           # 应用日志
└── prod-error.log     # 错误日志

日志查看

bash
# 实时查看
tail -f logs/prod.log

# 搜索错误
grep "ERROR" logs/prod.log

# Docker 日志
docker logs -f youlai-gin

相关文件

文件说明
DockerfileDocker 镜像构建
configs/prod.yaml生产环境配置
scripts/mysql/youlai_admin.sql数据库初始化脚本

基于 MIT 许可发布