本文档详细介绍了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 文件,其中定义了所有环境中使用的通用配置项。
基础配置文件定义了
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-admin | Swagger UI、静态资源、登录、注册、信息、登出、MinIO 上传 |
| mall-portal | Swagger UI、静态资源、首页、产品、品牌、SSO、支付宝 |
来源: mall-admin/src/main/resources/application.yml33-51 mall-portal/src/main/resources/application.yml21-39
应用程序为不同环境使用单独的配置文件,主要是开发和生产环境。
| 配置 | 开发 (Dev) | 生产 (Prod) |
|---|---|---|
| 数据库 URL | jdbc:mysql://:3306/mall | jdbc:mysql://db:3306/mall |
| MongoDB 主机 | localhost | mongo |
| Redis 主机 | localhost | redis |
| RabbitMQ 主机 | localhost | rabbit |
| 日志级别 | root: info, com.macro.mall: debug | root: info, com.macro.mall: info |
| 日志路径 | 默认 | /var/logs |
| 支付宝回调 URL | localhost 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 文件中进行配置,以实现一致的部署。
| 服务 | 图片 | 端口 | 描述 |
|---|---|---|---|
| MySQL | mysql:5.7 | 3306 | 主要关系型数据库 |
| Redis | redis:7 | 6379 | 缓存和会话管理 |
| MongoDB | mongo:4 | 27017 | 特定数据的文档数据库 |
| Elasticsearch | elasticsearch:7.17.3 | 9200, 9300 | 搜索引擎 |
| RabbitMQ | rabbitmq:3.9.11-management | 5672, 15672 | 消息队列 |
| Nginx | nginx:1.22 | 80 | Web 服务器和反向代理 |
| MinIO | minio/minio | 9090, 9001 | 对象存储服务 |
| Logstash | logstash:7.17.3 | 4560-4563 | 日志管道 |
| Kibana | kibana:7.17.3 | 5601 | 日志可视化 |
来源: document/docker/docker-compose-env.yml1-100
docker-compose-env.yml 文件包含每个服务的详细配置,包括
Elasticsearch 配置示例
在生产环境中,mall 应用部署为 Docker 容器,通过 Docker 的网络功能连接到基础设施服务。
来源: document/docker/docker-compose-app.yml1-42
docker-compose-app.yml 文件使用外部链接配置应用程序容器,使其能够使用域名而不是 IP 地址
Redis 配置对于会话管理、缓存和其他分布式功能很重要。
| 配置 | 描述 |
|---|---|
| redis.database | Redis 命名空间的键前缀 (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 用于管理基础设施服务和应用程序部署,并具有适当的网络配置来连接它们。
这种方法使得系统可以轻松地部署在不同的环境中,同时保持一致的配置和依赖关系。