172.20.205.37qcsj88888.com、api.qcsj88888.com| 容器 | 镜像 | 端口 | 网络 |
|---|---|---|---|
| java-backend | xjz/java-backend:1.0.0 | 8001 | app-tier, deploy_app-tier |
| frontend | xjz/frontend:2.5.4 | 5173→80 | app-tier |
| postgres | postgres:18.3 | 127.0.0.1:5432 | 宿主机, deploy_app-tier |
| redis | redis:8.6.2-alpine | 6379 | deploy_app-tier |
| nginx-proxy-manager | jc21/nginx-proxy-manager | 80/443/81 | deploy_app-tier |
| gogs | gogs/gogs | 3000/2222 | deploy_app-tier |
qcsj88888.com (HTTPS)
↓ NPM
├── /api/v1/* → java-backend:8001
└── 其余 → frontend:5173
/root/payments/code/payment-platform/root/payments/code/payment-platform/docker-compose.yml/root/payments/deploy/nginx-proxy-manager/datacd /root/payments/code/payment-platform
docker compose ps
docker stats --no-stream
docker compose logs java-backend --tail 50 # 最近50行
docker compose logs java-backend -f # 实时跟踪
docker compose logs java-backend --since 5m # 最近5分钟
docker compose restart java-backend
docker compose stop java-backend
docker compose start java-backend
curl http://localhost:8001/api/v1/payment/notify/health
# 预期返回: {"code":0,"data":{"status":"ok"}}
# === 本地 ===
cd D:\project2\payment-platform\java
mvn clean package -DskipTests
scp target/payment-platform-1.0.0.jar root@172.20.205.37:/root/payments/code/payment-platform/java/target/
# === 服务器 ===
cd /root/payments/code/payment-platform/java
docker build -t xjz/java-backend:1.0.0 .
cd ..
docker compose up -d java-backend
docker compose logs java-backend --tail 20 -f
新增 SQL 脚本放在 java/sql/,服务器执行:
docker exec -i postgres psql -U admin -d payment_platform_prod < /root/payments/code/payment-platform/java/sql/xxx.sql
docker stop java-backend
docker rm java-backend
cd /root/payments/code/payment-platform
git checkout master
docker compose up -d backend
JAVA_OPTS: "-Xms128m -Xmx256m -XX:+UseSerialGC -XX:MaxRAMPercentage=50 -XX:TieredStopAtLevel=1"
-Xms128m: 初始堆 128MB-Xmx256m: 最大堆 256MB-XX:+UseSerialGC: 单线程 GC(2C 服务器避免并发 GC 开销)-XX:MaxRAMPercentage=50: JVM 最多用 50% 物理内存-XX:TieredStopAtLevel=1: 减少 JIT 编译层级,启动更快SPRING_DATASOURCE_DRUID_URL: jdbc:postgresql://postgres:5432/payment_platform_prod?currentSchema=public
SPRING_DATASOURCE_DRUID_USERNAME: admin
SPRING_DATASOURCE_DRUID_PASSWORD: 'xjz#123321'
SPRING_DATA_REDIS_HOST: redis
SPRING_DATA_REDIS_PORT: 6379
SPRING_DATA_REDIS_DATABASE: 0
SPRING_DATA_REDIS_PASSWORD: '123456#xjz'
docker compose logs java-backend --tail 100
常见原因:
Connection refused: postgres:5432 → postgres 没加入 deploy_app-tier,执行 docker network connect deploy_app-tier postgresOutOfMemoryError → 调大 -Xmx 到 384mlsof -i:8001,停掉占用进程检查后端是否正常:
curl http://localhost:8001/api/v1/payment/notify/health
后端正常则查 NPM 是否在线:docker ps | grep nginx-proxy-manager
docker system prune -a --filter "until=72h" # 清理72小时前的旧镜像
# 数据库
docker exec postgres pg_dump -U admin payment_platform_prod > /root/backup/payment_$(date +%Y%m%d).sql