# 运维手册 ## 服务信息 | 服务 | 端口 | 容器名 | 镜像 | |---|---|---|---| | Java 后端 | 8001 | java-backend | xjz/java-backend:1.0.0 | | 前端 | 5173 | frontend | xjz/frontend:2.5.4 | --- ## 后端部署 ### 首次启动 ```bash docker run -d --name java-backend \ -p 8001:8001 \ --network payment-platform_app-tier \ -e TZ=Asia/Shanghai \ -e SPRING_PROFILES_ACTIVE=prod \ -e JAVA_OPTS="-Xms256m -Xmx512m" \ -e SPRING_DATASOURCE_DRUID_URL="jdbc:postgresql://postgres:5432/payment_platform_java?currentSchema=public" \ -e SPRING_DATASOURCE_DRUID_USERNAME=admin \ -e SPRING_DATASOURCE_DRUID_PASSWORD='xjz#123321' \ -e SPRING_DATA_REDIS_HOST=redis \ -e SPRING_DATA_REDIS_PORT=6379 \ -e SPRING_DATA_REDIS_DATABASE=0 \ -e SPRING_DATA_REDIS_PASSWORD='123456#xjz' \ xjz/java-backend:1.0.0 ``` ### 更新部署(重启 JAR) ```bash # 1. 本地构建 JAR cd /home/payments/code/payment-platform/java mvn package -DskipTests -q # 2. 复制到容器 docker cp target/payment-platform-1.0.0.jar java-backend:/app.jar # 3. 停止旧容器,删除并重建 docker stop java-backend && docker rm java-backend # 4. 重新启动(使用首次启动的 docker run 命令) docker run -d --name java-backend \ -p 8001:8001 \ --network payment-platform_app-tier \ -e TZ=Asia/Shanghai \ -e SPRING_PROFILES_ACTIVE=prod \ -e JAVA_OPTS="-Xms256m -Xmx512m" \ -e SPRING_DATASOURCE_DRUID_URL="jdbc:postgresql://postgres:5432/payment_platform_java?currentSchema=public" \ -e SPRING_DATASOURCE_DRUID_USERNAME=admin \ -e SPRING_DATASOURCE_DRUID_PASSWORD='xjz#123321' \ -e SPRING_DATA_REDIS_HOST=redis \ -e SPRING_DATA_REDIS_PORT=6379 \ -e SPRING_DATA_REDIS_DATABASE=0 \ -e SPRING_DATA_REDIS_PASSWORD='123456#zjz' \ xjz/java-backend:1.0.0 ``` > **注意:** 不要用 `docker restart`,容器缓存可能导致 JAR 不更新。必须 `stop` + `rm` + `run`。 ### 验证部署 ```bash # 1. 确认容器运行中 docker ps | grep java-backend # 2. 确认启动成功(等 30 秒后) docker logs java-backend --tail 20 # 3. 健康检查 curl http://localhost:8001/api/v1/payment/notify/health # 应返回: {"code":0,...} # 4. 确认代码版本 docker cp java-backend:/app.jar /tmp/app.jar unzip -p /tmp/app.jar "BOOT-INF/classes/com/payment/platform/module/system/auth/service/AuthService.class" > /tmp/AS.class strings /tmp/AS.class | grep "<关键字>" ``` --- ## 前端部署 ```bash # 本地构建 cd /home/payments/code/payment-platform/frontend npm run build # 复制到容器 docker cp dist/. frontend:/usr/share/nginx/html/ # 重载 nginx(如果容器内配置了 nginx) docker exec frontend nginx -s reload ``` --- ## 小程部署 ```bash cd /home/payments/code/payment-mini npm run build:alipay # 打开支付宝开发者工具 → 上传 ``` --- ## 常用命令 ### 查看日志 ```bash # 后端实时日志 docker logs -f java-backend # 最近 100 行 docker logs java-backend --tail 100 # 过滤错误 docker logs java-backend --tail 200 2>&1 | grep -iE "ERROR|WARN" ``` ### 数据库 ```bash # 连接 PostgreSQL docker exec -it postgres psql -U admin -d payment_platform_java ``` ### RocketMQ ```bash # 查看消息队列 docker logs rocketmq-broker --tail 50 ``` --- ## 环境变量 | 变量 | 默认值 | 说明 | |---|---|---| | `SPRING_PROFILES_ACTIVE` | prod | Spring 配置环境 | | `JAVA_OPTS` | -Xms256m -Xmx512m | JVM 参数 | | `SPRING_DATASOURCE_DRUID_URL` | — | PG 连接串 | | `SPRING_DATA_REDIS_HOST` | redis | Redis 地址 | | `SPRING_DATA_REDIS_PASSWORD` | — | Redis 密码 |