Files
java-10584/docker-deploy-guide.md
赵忠林 a1a3d78dd6 feat(generator): 添加代码生成器模板和AI聊天功能
- 新增.gitignore文件配置忽略规则
- 添加Taro页面配置模板add.config.ts.btl
- 添加Taro页面组件模板add.tsx.btl用于动态表单生成
- 实现AiController提供AI聊天消息处理功能
- 集成WebSocket实现AI消息流式传输
- 添加支付宝支付配置工具类AlipayConfigUtil
- 创建支付宝参数实体AlipayParam
- 集成阿里云短信发送工具AliYunSender
- 添加阿里云机器翻译工具AliyunTranslateUtil
- 完善API响应结果包装类ApiResult
- 配置多环境应用参数application.yml
- 添加CMS生产环境配置application-cms.yml
- 添加开发环境配置application-dev.yml
- 添加生产环境配置application-prod.yml
2026-02-13 02:21:21 +08:00

189 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Docker容器化部署指南
## 支付证书问题解决方案
本项目已经解决了Docker容器中支付证书路径失效的问题支持多种证书加载方式。
## 目录结构
```
project-root/
├── Dockerfile
├── docker-compose.yml
├── certs/ # 证书目录(需要手动创建)
│ ├── wechat/ # 微信支付证书
│ │ ├── apiclient_key.pem
│ │ ├── apiclient_cert.pem
│ │ └── wechatpay_cert.pem
│ └── alipay/ # 支付宝证书
│ ├── app_private_key.pem
│ ├── appCertPublicKey.crt
│ ├── alipayCertPublicKey.crt
│ └── alipayRootCert.crt
├── logs/ # 日志目录
├── uploads/ # 上传文件目录
└── src/
```
## 部署步骤
### 1. 准备证书文件
创建证书目录并放置证书文件:
```bash
# 创建证书目录
mkdir -p certs/wechat
mkdir -p certs/alipay
# 复制微信支付证书到对应目录
cp /path/to/your/apiclient_key.pem certs/wechat/
cp /path/to/your/apiclient_cert.pem certs/wechat/
cp /path/to/your/wechatpay_cert.pem certs/wechat/
# 复制支付宝证书到对应目录
cp /path/to/your/app_private_key.pem certs/alipay/
cp /path/to/your/appCertPublicKey.crt certs/alipay/
cp /path/to/your/alipayCertPublicKey.crt certs/alipay/
cp /path/to/your/alipayRootCert.crt certs/alipay/
# 设置证书文件权限(只读)
chmod -R 444 certs/
```
### 2. 配置环境变量
创建 `.env` 文件(可选):
```bash
# 应用配置
SPRING_PROFILES_ACTIVE=prod
JAVA_OPTS=-Xms512m -Xmx1024m
# 数据库配置
MYSQL_ROOT_PASSWORD=root123456
MYSQL_DATABASE=modules
MYSQL_USER=modules
MYSQL_PASSWORD=8YdLnk7KsPAyDXGA
# Redis配置
REDIS_PASSWORD=redis_WSDb88
```
### 3. 构建和启动
```bash
# 构建应用
mvn clean package -DskipTests
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看应用日志
docker-compose logs -f cms-app
```
### 4. 验证部署
```bash
# 检查应用健康状态
curl http://localhost:9200/actuator/health
# 检查证书是否正确加载
docker exec cms-java-app ls -la /app/certs/
```
## 证书加载模式
### 开发环境 (CLASSPATH)
- 证书文件放在 `src/main/resources/certs/` 目录下
- 打包时会包含在jar包中
- 适合开发和测试环境
### 生产环境 (VOLUME)
- 证书文件通过Docker挂载卷加载
- 证书文件在宿主机上,挂载到容器的 `/app/certs` 目录
- 支持证书文件的动态更新(重启容器后生效)
### 文件系统模式 (FILESYSTEM)
- 直接从文件系统路径加载证书
- 适合传统部署方式
## 配置说明
### application.yml 配置
```yaml
certificate:
load-mode: VOLUME # 证书加载模式
cert-root-path: /app/certs # 证书根目录
wechat-pay:
dev:
api-v3-key: "your-api-v3-key"
private-key-file: "apiclient_key.pem"
apiclient-cert-file: "apiclient_cert.pem"
wechatpay-cert-file: "wechatpay_cert.pem"
```
### 环境特定配置
- **开发环境**: `application-dev.yml` - 使用CLASSPATH模式
- **生产环境**: `application-prod.yml` - 使用VOLUME模式
## 故障排除
### 1. 证书文件找不到
```bash
# 检查证书文件是否存在
docker exec cms-java-app ls -la /app/certs/
# 检查文件权限
docker exec cms-java-app ls -la /app/certs/wechat/
```
### 2. 支付接口调用失败
```bash
# 查看应用日志
docker-compose logs cms-app | grep -i cert
# 检查证书配置
docker exec cms-java-app cat /app/application.yml | grep -A 10 certificate
```
### 3. 容器启动失败
```bash
# 查看详细错误信息
docker-compose logs cms-app
# 检查容器状态
docker-compose ps
```
## 安全建议
1. **证书文件权限**: 设置为只读权限 (444)
2. **证书目录权限**: 限制访问权限
3. **敏感信息**: 使用环境变量或Docker secrets管理敏感配置
4. **网络安全**: 使用内部网络,限制端口暴露
## 更新证书
1. 停止应用容器:`docker-compose stop cms-app`
2. 更新证书文件到 `certs/` 目录
3. 重启应用容器:`docker-compose start cms-app`
## 监控和日志
- 应用日志:`./logs/` 目录
- 容器日志:`docker-compose logs`
- 健康检查:访问 `/actuator/health` 端点
通过以上配置你的应用在Docker容器中就能正确加载支付证书了