Skip to content

后端部署

EasyFly-Ads 后端采用微服务架构,支持 Docker Compose 一键部署和手动部署两种方式。本章详细介绍部署流程与配置方法。

部署方式选择

方式适用场景推荐度
Docker Compose小规模、快速上线⭐⭐⭐⭐⭐
Kubernetes大规模、高可用⭐⭐⭐⭐
手动部署开发测试⭐⭐⭐

Docker Compose 部署(推荐)

准备工作

确保服务器已安装 Docker 和 Docker Compose(见准备服务器)。

配置文件

创建 docker-compose.yml

yaml
version: '3.8'

services:
  # 用户服务
  user-service:
    image: easyfly/user-service:latest
    restart: always
    ports:
      - "8081:8080"
    environment:
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_USER=easyfly
      - DB_PASSWORD=your_password
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - REDIS_PASSWORD=your_redis_password
    volumes:
      - ./logs/user:/app/logs
    depends_on:
      - mysql
      - redis

  # 广告服务
  ad-service:
    image: easyfly/ad-service:latest
    restart: always
    ports:
      - "8082:8080"
    environment:
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_USER=easyfly
      - DB_PASSWORD=your_password
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - ES_HOST=elasticsearch:9200
    volumes:
      - ./logs/ad:/app/logs
    depends_on:
      - mysql
      - redis
      - elasticsearch

  # 支付服务
  pay-service:
    image: easyfly/pay-service:latest
    restart: always
    ports:
      - "8083:8080"
    environment:
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_USER=easyfly
      - DB_PASSWORD=your_password
      - REDIS_HOST=redis
      - WECHAT_PAY_MCH_ID=your_mch_id
      - WECHAT_PAY_API_KEY=your_api_key
    volumes:
      - ./logs/pay:/app/logs
    depends_on:
      - mysql
      - redis

  # API 网关
  api-gateway:
    image: easyfly/api-gateway:latest
    restart: always
    ports:
      - "8080:8080"
    environment:
      - USER_SERVICE_URL=http://user-service:8080
      - AD_SERVICE_URL=http://ad-service:8080
      - PAY_SERVICE_URL=http://pay-service:8080
      - RISK_SERVICE_URL=http://risk-service:8080
    depends_on:
      - user-service
      - ad-service
      - pay-service

启动服务

bash
# 拉取最新镜像
docker-compose pull

# 启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

手动部署

环境要求

依赖版本
JDK17+
Maven / Gradle3.8+ / 7.x+
MySQL8.0
Redis6+

编译项目

bash
# 克隆仓库
git clone <仓库地> easyfly-backend
cd easyfly-backend

# Maven 编译
mvn clean package -DskipTests

# 产物位于各模块的 target/ 目录
# user-service/target/user-service.jar
# ad-service/target/ad-service.jar

配置文件

每个服务需要独立的 application.yml 配置:

yaml
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/easyfly?useUnicode=true&characterEncoding=utf8mb4
    username: easyfly
    password: your_password
  redis:
    host: 127.0.0.1
    port: 6379
    password: your_redis_password

启动服务

bash
# 分别启动各服务
nohup java -jar user-service.jar --spring.profiles.active=prod > user-service.log 2>&1 &
nohup java -jar ad-service.jar --spring.profiles.active=prod > ad-service.log 2>&1 &
nohup java -jar pay-service.jar --spring.profiles.active=prod > pay-service.log 2>&1 &

健康检查

部署完成后验证各服务状态:

bash
# 检查服务是否运行
curl http://localhost:8080/actuator/health

# 检查各子服务
curl http://localhost:8081/actuator/health
curl http://localhost:8082/actuator/health
curl http://localhost:8083/actuator/health

日志管理

日志默认输出到各服务的 logs/ 目录,建议配置日志收集:

yaml
# logback-spring.xml
logging:
  file:
    path: /data/logs/easyfly
  level:
    root: INFO
    com.easyfly: DEBUG

性能优化建议

优化项建议
JVM 参数-Xms2g -Xmx2g -XX:+UseG1GC
数据库连接池根据并发量调整 HikariCP 连接数
Redis 连接池Lettuce 连接池大小设为 CPU 核数 × 2
接口限流使用 Sentinel / RateLimiter 控制 QPS

下一步