菜单

环境配置

相关源文件

目的与范围

本文档详细介绍了mall电商系统中使用的环境配置方法。它涵盖了开发和生产环境中跨配置文件的配置、特定于环境的设置以及基础设施服务的配置。有关 Docker 部署程序,请参阅Docker 部署

配置结构

mall电商系统使用 Spring Boot 的基于 profile 的配置方法来管理不同的环境。配置文件以分层结构组织,以将通用设置与特定于环境的设置分开。

来源: mall-admin/src/main/resources/application.yml1-65 mall-portal/src/main/resources/application.yml1-62 mall-portal/src/main/resources/application-dev.yml1-53 mall-portal/src/main/resources/application-prod.yml1-61 document/docker/docker-compose-env.yml1-100 mall-portal/src/main/resources/application-dev.yml1-53 document/docker/docker-compose-app.yml1-42

通用配置项

mall-admin 和 mall-portal 模块都有自己的 application.yml 文件,其中定义了所有环境中使用的通用配置项。

应用基础配置

基础配置文件定义了

  1. 默认激活的 profile (dev)
  2. MyBatis Mapper 位置
  3. JWT (JSON Web Token) 配置
  4. Redis 键配置
  5. 安全白名单 URL

mall-portal 的 application.yml 示例

spring:
  profiles:
    active: dev #默认为开发环境
  
jwt:
  tokenHeader: Authorization #JWT存储的请求头
  secret: mall-portal-secret #JWT加解密使用的密钥
  expiration: 604800 #JWT的超期限时间(60*60*24*7)
  tokenHead: 'Bearer '  #JWT负载中拿到开头

来源: mall-admin/src/main/resources/application.yml1-65 mall-portal/src/main/resources/application.yml1-62 mall-portal/src/main/resources/application-dev.yml1-53 mall-portal/src/main/resources/application-prod.yml1-61 document/docker/docker-compose-env.yml1-100 document/docker/docker-compose-app.yml1-42

安全配置

安全配置定义了从身份验证中排除的路径

模块安全白名单路径
mall-adminSwagger UI、静态资源、登录、注册、信息、登出、MinIO 上传
mall-portalSwagger UI、静态资源、首页、产品、品牌、SSO、支付宝

来源: mall-admin/src/main/resources/application.yml33-51 mall-portal/src/main/resources/application.yml21-39

环境特定配置

应用程序为不同环境使用单独的配置文件,主要是开发和生产环境。

开发 vs 生产配置

配置开发 (Dev)生产 (Prod)
数据库 URLjdbc:mysql://:3306/malljdbc:mysql://db:3306/mall
MongoDB 主机localhostmongo
Redis 主机localhostredis
RabbitMQ 主机localhostrabbit
日志级别root: info, com.macro.mall: debugroot: info, com.macro.mall: info
日志路径默认/var/logs
支付宝回调 URLlocalhost URL生产 IP URL

来源: mall-portal/src/main/resources/application-dev.yml1-53 mall-portal/src/main/resources/application-prod.yml1-61 document/docker/docker-compose-app.yml1-42

来源: mall-portal/src/main/resources/application-dev.yml1-53 mall-portal/src/main/resources/application-prod.yml1-61 document/docker/docker-compose-app.yml1-42

基础设施服务配置

mall 系统依赖于多个基础设施服务,这些服务在 Docker Compose 文件中进行配置,以实现一致的部署。

核心基础设施服务

服务图片端口描述
MySQLmysql:5.73306主要关系型数据库
Redisredis:76379缓存和会话管理
MongoDBmongo:427017特定数据的文档数据库
Elasticsearchelasticsearch:7.17.39200, 9300搜索引擎
RabbitMQrabbitmq:3.9.11-management5672, 15672消息队列
Nginxnginx:1.2280Web 服务器和反向代理
MinIOminio/minio9090, 9001对象存储服务
Logstashlogstash:7.17.34560-4563日志管道
Kibanakibana:7.17.35601日志可视化

来源: document/docker/docker-compose-env.yml1-100

docker-compose-env.yml 文件包含每个服务的详细配置,包括

  • 用于持久化的卷挂载
  • 环境变量
  • 网络连接
  • 依赖关系

Elasticsearch 配置示例

Docker 容器网络

在生产环境中,mall 应用部署为 Docker 容器,通过 Docker 的网络功能连接到基础设施服务。

来源: document/docker/docker-compose-app.yml1-42

docker-compose-app.yml 文件使用外部链接配置应用程序容器,使其能够使用域名而不是 IP 地址

Redis 配置详情

Redis 配置对于会话管理、缓存和其他分布式功能很重要。

配置描述
redis.databaseRedis 命名空间的键前缀 (mall)
redis.key.authCode认证码键前缀 (ums:authCode)
redis.key.orderId订单 ID 键前缀 (oms:orderId)
redis.key.member会员信息键前缀 (ums:member)
redis.expire.authCode认证码过期时间 (90 秒)
redis.expire.common通用过期时间 (24 小时)

来源: mall-portal/src/main/resources/application.yml41-50 mall-admin/src/main/resources/application.yml25-31

日志配置

日志配置在开发和生产环境之间有所不同

环境配置
开发更高的详细程度,本地日志记录
生产记录到 /var/logs 目录,较低的详细程度

来源: mall-portal/src/main/resources/application-dev.yml36-39 mall-portal/src/main/resources/application-prod.yml43-48

第三方服务配置

mall 系统集成了多个第三方服务,这些服务需要特定的配置。

支付宝集成

支付宝支付网关在 application-dev.yml 和 application-prod.yml 文件中配置

来源:mall-portal/src/main/resources/application-dev.yml45-51 mall-portal/src/main/resources/application-prod.yml53-59

结论

mall 系统中的环境配置遵循 Spring Boot 的约定,使用基于 profile 的配置。系统为通用设置和特定环境设置使用单独的文件。Docker Compose 用于管理基础设施服务和应用程序部署,并具有适当的网络配置来连接它们。

这种方法使得系统可以轻松地部署在不同的环境中,同时保持一致的配置和依赖关系。