跳转到内容

跨境多商户版 · 部署指南文档

三端 jar 容器化,Nginx 按用户 / 商家 / 平台分 HTTPS 站点。跨境回调只走 443。推荐全程 Docker。文中域名、IP、密码均为示例,上线前必须替换。

组件 版本
JDK(镜像内) 17
MySQL 8.0
Redis 5.0+
Elasticsearch 7.x
XXL-JOB 3.0.0
Docker / Compose 当前稳定版

先在开发机把后端打好包,再放到生产机。服务器需已安装 dockerdocker compose

mall4j-shop
├─ mysql/initdb # 初始化 SQL
├─ mysql/my.cnf
├─ mysql/data # 数据卷,禁止删除
├─ yami-shop-api # 用户端 jar
├─ yami-shop-multishop # 商家端 jar
├─ yami-shop-platform # 平台端 jar
├─ nginx/conf.d / html / ssl
└─ docker-compose.yml

目录

  • SQL:跨境 BBC 仓库编号脚本 → mysql/initdb(首次 Compose 自动导入)。
  • jar:mvn clean package -DskipTests 后放入三个 SNAPSHOT jar。
  • 前端 dist → html/h5html/pchtml/multishophtml/platformhtml/ms
  • 证书 → nginx/ssl

Compose 注入 MySQL / Redis / ES / IM。非 Docker 改 application-prod.ymlmysql/data 禁止删除。

Terminal window
cd mall4j-shop
docker compose up -d --build

启动

80/443 对公网;MySQL/Redis/ES/IM 仅内网。替换示例密码(含模板 hn02le.34lkdLKD)。

conf.d 通常包括 api、multishop、platform、h5、pc、ms、im、minio、xxl-job。每个站点:

  • listen 80return 301 https://$host$request_uri
  • listen 443 ssl http2,证书在 nginx/ssl
  • 静态站 root /usr/share/nginx/html/<端>
  • 后台 /apis rewrite 后反代对应 Java 容器
  • 生产屏蔽 /apis/doc.html
server {
listen 443 ssl http2;
server_name cbec-bbc-multishop.example.com;
ssl_certificate ssl/your.pem;
ssl_certificate_key ssl/your.key;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
proxy_pass http://mall4j-cbec-bbc-vs;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /apis {
rewrite ^/apis/(.*)$ /$1 break;
proxy_pass http://mall4j-cbec-bbc-multishop:8113;
proxy_cookie_path / "/; httponly; secure; SameSite=Lax";
}
location /apis/doc.html { return 404; }
}

用户 API:

location / {
proxy_pass http://127.0.0.1:8112;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

支付、报关、物流 webhook 的公网 URL 必须与证书域名一致。H5/PC 用 try_files $uri $uri/ /;

各端 .env.production 指向 HTTPS 后再 build,产物放入 html 对应子目录。小程序 request 合法域名同步更新。

分别启动三个 jar,-Dspring.profiles.active=prod。Nginx proxy_pass 改为内网 IP;XXL-JOB 单独部署。