Appearance
Linux 容器化部署微服务 SpringBoot 项目
本文档介绍如何在 Linux 环境下使用 1Panel 可视化面板部署基于 Nacos 的微服务 SpringBoot 项目。
目录导航
项目技术栈
- Spring Boot: 3.2.4
- Spring Cloud: 2023.0.2
- Spring Cloud Alibaba: 2023.0.1.0
- Java: 17+ (推荐 OpenJDK 17)
- Nacos: 2.2.3+ (服务注册与发现、配置中心)
- Maven: 3.6.3+
- 项目版本: 2.2.0-RELEASE
- Docker: 20.10+
- 1Panel: 最新版本 (可视化Docker管理面板)
容器化部署架构说明
项目采用 Spring Cloud 微服务架构,所有服务通过 Docker 容器运行,包含以下核心服务:
- Redis 容器: 缓存服务 (端口 6379)
- Nacos 容器: 服务注册与发现、配置中心 (端口 8848, 9848, 9849)
- Minio 容器: 对象存储服务 (端口 9000, 9090)
- OpenResty: 前端Web服务器和反向代理 (端口 80, 443)
- jpwise-boot-gateway 容器: 网关服务 (端口 30002)
- jpwise-boot-platform 容器: 平台服务 (端口 30003)
- jpwise-boot-business 容器: 业务服务 (端口 30004)
所有容器通过 Docker 网络互联,配置统一在 Nacos 配置中心管理。
说明:
- 数据库: MySQL 或达梦数据,需在部署前准备好(可在宿主机或独立服务器部署)
- 前端: 使用 1Panel 的 OpenResty 反向代理部署,详见第2.5节
0 环境准备
0.1 服务器要求
最低配置:
- CPU: 4核
- 内存: 8GB
- 硬盘: 100GB
- 操作系统: CentOS 7+、Ubuntu 18.04+、Debian 9+
推荐配置:
- CPU: 8核
- 内存: 16GB
- 硬盘: 200GB SSD
0.2 数据库准备
在部署微服务前,需要准备好数据库服务。详细的数据库安装步骤请参考 Linux数据库安装
注意事项:
- 确保数据库服务正常运行且可从 Docker 容器访问
- 记录数据库连接信息(主机、端口、用户名、密码),后续在 Nacos 配置中使用
- 如果数据库在宿主机,容器内访问地址为
host.docker.internal或宿主机内网IP - 如果使用防火墙,需开放数据库端口(MySQL: 3306,达梦: 5236)
0.3 防火墙端口
需要开放以下端口:
bash
# 1Panel 面板
firewall-cmd --zone=public --add-port=10086/tcp --permanent
# 数据库端口(如果数据库在宿主机)
firewall-cmd --zone=public --add-port=3306/tcp --permanent # MySQL
# firewall-cmd --zone=public --add-port=5236/tcp --permanent # 达梦(如果使用)
# Docker 服务端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent # Redis
firewall-cmd --zone=public --add-port=8848/tcp --permanent # Nacos
firewall-cmd --zone=public --add-port=9000/tcp --permanent # Minio API
firewall-cmd --zone=public --add-port=9090/tcp --permanent # Minio控制台
firewall-cmd --zone=public --add-port=30002/tcp --permanent # Gateway
firewall-cmd --zone=public --add-port=30003/tcp --permanent # Platform
firewall-cmd --zone=public --add-port=30004/tcp --permanent # Business
firewall-cmd --zone=public --add-port=80/tcp --permanent # HTTP (OpenResty)
firewall-cmd --zone=public --add-port=443/tcp --permanent # HTTPS (OpenResty)
# 重载防火墙
firewall-cmd --reload0.4 创建项目目录结构
bash
# 创建项目根目录
mkdir -p /opt/jpwise-docker
# 创建数据持久化目���
mkdir -p /opt/jpwise-docker/data/{redis,nacos,minio}
# 创建配置文件目录
mkdir -p /opt/jpwise-docker/config/{redis,nacos}
# 创建日志目录
mkdir -p /opt/jpwise-docker/logs/{gateway,platform,business,nacos}
# 创建镜像存储目录
mkdir -p /opt/jpwise-docker/images
# 创建备份目录
mkdir -p /opt/jpwise-docker/backup
# 创建前端文件目录
mkdir -p /opt/jpwise/frontend1. 安装并配置 1Panel
1.1 安装 1Panel
1.1.1 一键安装
bash
# 使用官方安装脚本(会自动安装Docker和Docker Compose)
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh安装过程中会提示设置:
- 1Panel监听端口 (默认10086)
- 面板入口路径 (默认随机生成)
- 管理员用户名
- 管理员密码
重要: 请妥善保存安装完成后显示的访问信息!
1.1.2 访问1Panel面板
安装完成后,访问面板:
http://YOUR_SERVER_IP:端口/入口路径
# 示例: http://192.168.1.100:10086/entrance_abc123
# 请将 YOUR_SERVER_IP 替换为实际的服务器IP地址
# 端口和入口路径使用安装时设置的值使用安装时设置的管理员账号登录。
1.2 配置Docker镜像源
登录1Panel后:
- 左侧菜单选择 容器 → 设置
- 找到 镜像加速 配置项
- 添加国内镜像源:
https://docker.m.daocloud.io https://docker.nju.edu.cn https://docker.mirrors.sjtug.sjtu.edu.cn - 点击保存并重启Docker
2. 部署基础服务
在部署微服务之前,需要先部署基础服务:Redis、Nacos、Minio、OpenResty。
注意: 数据库(MySQL 或达梦)应该已经在环境准备阶段部署完成。
2.1 部署 Redis
- 在 1Panel 中选择 容器 → 容器
- 点击右上角 创建容器 按钮
- 填写容器配置:
基本信息:
- 容器名称:
jpwise-redis - 镜像:
redis:7.2-alpine
端口映射:
- 主机端口:
6379 - 容器端口:
6379
环境变量:
TZ=Asia/Shanghai存储卷:
- 主机路径:
/opt/jpwise-docker/data/redis - 容器路径:
/data
其他设置:
- 重启策略:
always
启动命令(可选):
redis-server --requirepass 123456.zxc --appendonly yes- 点击 确定 创建并启动容器
- 确认容器运行成功
2.2 部署 Nacos
- 点击 创建容器 按钮
- 填写容器配置:
基本信息:
- 容器名称:
jpwise-nacos - 镜像:
nacos/nacos-server:v2.5.1
端口映射:
8848:88489848:98489849:9849
环境变量:
JVM_XMN=1g
MODE=standalone
JVM_XMS=2g
JVM_XMX=2g
NACOS_AUTH_IDENTITY_KEY=serverIdentity
NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
JVM_MS=128m
NACOS_SERVER_IP=
NACOS_AUTH_IDENTITY_VALUE=security
PREFER_HOST_MODE=hostname
JVM_MMS=320m
NACOS_AUTH_ENABLE=true
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
BASE_DIR=/home/nacos
CLASSPATH=.:/home/nacos/conf:
CLUSTER_CONF=/home/nacos/conf/cluster.conf
FUNCTION_MODE=all
JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
NACOS_USER=nacos
JAVA=/usr/lib/jvm/java-1.8-openjdk/bin/java
NACOS_DEBUG=n
TOMCAT_ACCESSLOG_ENABLED=false
TIME_ZONE=Asia/Shanghai说明:
MYSQL_SERVICE_HOST: 根据实际情况填写- 如果数据库在同一服务器: 使用
host.docker.internal或服务器内网IP - 如果数据库在独立服务器: 使用数据库服务器IP地址
- 如果使用云数据库: 使用云数据库提供的连接地址
- 如果数据库在同一服务器: 使用
MYSQL_SERVICE_PORT: MySQL使用3306,达梦使用5236MYSQL_SERVICE_USER和MYSQL_SERVICE_PASSWORD: 使用在0.2节配置的数据库用户
存储卷:
- 主机路径:
/opt/jpwise-docker/data/nacos - 容器路径:
/home/nacos/data - 主机路径:
/opt/jpwise-docker/logs/nacos - 容器路径:
/home/nacos/logs
其他设置:
- 重启策略:
always
- 点击 确定 创建并启动容器
- 等待 Nacos 启动(约 30-60 秒)
- 访问 Nacos 控制台验证:
http://YOUR_SERVER_IP:8848/nacos- 默认用户名:
nacos - 默认密码:
nacos - 请将 YOUR_SERVER_IP 替换为实际的服务器IP地址
- 默认用户名:
2.3 配置 Nacos
重要: 首次启动后,需要在 Nacos 控制台配置命名空间和配置文件。
2.3.1 创建命名空间
- 访问 Nacos 控制台:
http://YOUR_SERVER_IP:8848/nacos(将 YOUR_SERVER_IP 替换为实际IP) - 登录后,进入 命名空间 菜单
- 点击 新建命名空间 按钮
- 创建以下命名空间:
- 命名空间 ID:
dev,命名空间名:开发环境 - 命名空间 ID:
test,命名空间名:测试环境 - 命名空间 ID:
prod,命名空间名:生产环境
- 命名空间 ID:
2.3.2 配置配置文件
配置文件可从 \ftp\JAVA\linux\nacos_config_export.zip 直接导入后进行修改
- 进入 配置管理 → 配置列表
- 选择命名空间(如
dev) - 点击 创建配置 按钮
- 创建以下配置文件:
配置文件 1:jpwise-common.yml
- Data ID:
jpwise-common.yml - Group:
JPWISE_GROUP - 配置格式:
YAML - 配置内容:(从项目配置文件中复制)
配置文件 2:jpwise-datasource.yml
- Data ID:
jpwise-datasource.yml - Group:
JPWISE_GROUP - 配置格式:
YAML - 配置内容:
yaml
spring:
datasource:
# MySQL 配置示例
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://your_database_host:3306/jpwise_platform?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: your_username
password: your_password
# 达梦数据库配置示例(如果使用达梦)
# driver-class-name: dm.jdbc.driver.DmDriver
# url: jdbc:dm://your_database_host:5236/jpwise_platform?useUnicode=true&characterEncoding=utf-8
# username: your_username
# password: your_password说明: 替换 your_database_host、your_username、your_password 为实际的数据库连接信息。
配置文件 3:jpwise-gateway.yml
- Data ID:
jpwise-gateway.yml - Group:
JPWISE_GROUP - 配置格式:
YAML - 配置内容:(网关服务特定配置)
配置文件 4:jpwise-platform.yml
- Data ID:
jpwise-platform.yml - Group:
JPWISE_GROUP - 配置格式:
YAML - 配置内容:(平台服务特定配置)
配置文件 5:jpwise-business.yml
- Data ID:
jpwise-business.yml - Group:
JPWISE_GROUP - 配置格式:
YAML - 配置内容:(业务服务特定配置)
- 点击 发布 保存配置
💡 提示:配置文件的具体内容请从项目配置文件中复制,或联系项目管理员获取。
2.4 部署 Minio
Minio 是对象存储服务,用于存储文件、图片等资源。
- 点击 创建容器 按钮
- 填写容器配置:
基本信息:
- 容器名称:
jpwise-minio - 镜像:
minio/minio:latest
端口映射:
- 主机端口:
9000,容器端口:9000(API端口) - 主机端口:
9090,容器端口:9090(控制台端口)
环境变量:
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
TZ=Asia/Shanghai说明: 生产环境请修改默认的用户名和密码
存储卷:
- 主机路径:
/opt/jpwise-docker/data/minio - 容器路径:
/data
启动命令:
server /data --console-address ":9090"其他设置:
- 重启策略:
always
- 点击 确定 创建并启动容器
- 等待 Minio 启动(约 10 秒)
- 访问 Minio 控制台验证:
http://YOUR_SERVER_IP:9090- 默认用户名:
minioadmin - 默认密码:
minioadmin - 请将 YOUR_SERVER_IP 替换为实际的服务器IP地址
- 默认用户名:
首次登录后的配置:
- 登录 Minio 控制台
- 创建 Bucket(存储桶):
- 点击 Buckets → Create Bucket
- Bucket Name:
jpwise-resources - 点击 Create Bucket
- 配置访问策略(根据需求设置为 public 或 private)
2.5 部署 OpenResty(前端Web服务器)
OpenResty 用于部署前端静态资源和反向代理。
使用 1Panel 的 OpenResty 应用:
- 在 1Panel 中选择 应用商店
- 搜索 OpenResty
- 点击 安装
- 填写安装配置:
- 应用名称:
openresty - 版本:选择最新稳定版
- 端口映射:
- HTTP端口:
80 - HTTPS端口:
443
- HTTP端口:
- 数据目录:
/opt/1panel/apps/openresty/openresty
- 应用名称:
- 点击 确认 安装
创建前端网站:
- 安装完成后,选择 网站 → 网站
- 点击 创建 按钮
- 填写网站配置:
- 分组:默认即可
- 选择类型:选择 新装应用
- 应用:默认
Cordys CRM即可 - 版本号:默认即可
- 名称:可自行填写(如
jpwise_web) - HTTP端口:填写用户访问的前端项目端口号(如
8081) - MCP端口:与HTTP端口一致(如
8082) - 主域名:填写域名或服务器IP
- 代号:网站目录的文件夹名称(该目录将作为网站根目录)

- 点击 确认 创建
修改网站配置文件:
- 网站创建完成后,点击配置,再点击配置文件,将配置文件修改为下述配置
bash
server {
listen 网站端口号;
server_name 网站名称;
root /www/sites/网站代号/index;
index index.html index.htm;
access_log /www/sites/网站代号/log/access.log;
error_log /www/sites/网站代号/log/error.log;
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 1000;
location / {
try_files $uri $uri/ /index.html;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
}修改完成后点击保存并重载
上传前端文件:
构建前端项目(在开发机器上):
bash# 进入前端项目目录 cd /path/to/frontend/project # 构建生产环境代码 npm run build # 打包 dist 目录 tar -czf frontend-dist.tar.gz dist/使用 1Panel 文件管理上传:
- 系统 → 文件
- 导航到
网站的root目录 - 上传
frontend-dist.tar.gz - 解压文件:
tar -xzf frontend-dist.tar.gz - 将 dist 目录中的文件移动到
/opt/jpwise/frontend/根目录
验证OpenResty部署:
访问前端网站:http://YOUR_SERVER_IP 或 http://your-domain.com
3. 构建微服务 Docker 镜像
3.1 准备工作
微服务镜像需要在**本地开发机器(Windows/Mac/Linux)**上构建,然后传输到 Linux 服务器。
项目已提供的文件:
docker/Dockerfile-gateway- 网关服务 Dockerfiledocker/Dockerfile-platform- 平台服务 Dockerfiledocker/Dockerfile-business- 业务服务 Dockerfiledocker/build-microservices.sh- 镜像构建脚本
3.2 在本地构建镜像
3.2.1 Windows 环境构建
在项目根目录打开 PowerShell 或 CMD:
powershell
# 确保 Docker Desktop 正在运行
docker version
# 先编译打包项目
mvn clean package -DskipTests
# 构建所有微服务镜像
docker build -f docker/Dockerfile-gateway -t jpwise/gateway:2.2.0-RELEASE .
docker build -f docker/Dockerfile-platform -t jpwise/platform:2.2.0-RELEASE .
docker build -f docker/Dockerfile-business -t jpwise/business:2.2.0-RELEASE .
# 查看构建的镜像
docker images | findstr jpwise3.2.2 Linux/Mac 环境构建
在项目根目录打开终端:
bash
# 确保 Docker 正在运行
docker version
# 先编译打包项目
mvn clean package -DskipTests
# 使用构建脚本(推荐)
chmod +x docker/build-microservices.sh
./docker/build-microservices.sh
# 或手动构建
docker build -f docker/Dockerfile-gateway -t jpwise/gateway:2.2.0-RELEASE .
docker build -f docker/Dockerfile-platform -t jpwise/platform:2.2.0-RELEASE .
docker build -f docker/Dockerfile-business -t jpwise/business:2.2.0-RELEASE .
# 查看构建的镜像
docker images | grep jpwise3.3 导出镜像文件
构建完成后,将镜像导出为 tar 文件:
bash
# 导出三个微服务镜像
docker save jpwise/gateway:2.2.0-RELEASE -o docker/docker-images/jpwise-gateway.tar
docker save jpwise/platform:2.2.0-RELEASE -o docker/docker-images/jpwise-platform.tar
docker save jpwise/business:2.2.0-RELEASE -o docker/docker-images/jpwise-business.tar
# Windows 用户可以这样查看文件
dir docker/docker-images
# Linux/Mac 用户
ls -lh docker/docker-images/预期输出:
jpwise-gateway.tar (~450MB)
jpwise-platform.tar (~500MB)
jpwise-business.tar (~500MB)3.4 上传镜像到 Linux 服务器
方式 A:使用 SCP/SFTP 上传
bash
# 在本地机器执行(Linux/Mac)
# 请将 YOUR_SERVER_IP 替换为实际的服务器IP地址
scp docker/docker-images/*.tar root@YOUR_SERVER_IP:/opt/jpwise-docker/images/
# Windows 用户可以使用 WinSCP、FileZilla 等图形化工具上传
# 上传到服务器的 /opt/jpwise-docker/images/ 目录
# 服务器地址填写实际的IP,如: 192.168.1.100方式 B:使用 1Panel 文件管理上传(推荐)
如果已安装 1Panel:
- 登录 1Panel 管理面板
- 左侧菜单选择 文件 → 文件管理
- 导航到
/opt/jpwise-docker/images/ - 点击 上传 按钮
- 选择三个 tar 文件上传
3.5 导入微服务镜像
3.5.1 使用 1Panel 图形界面导入
步骤1: 查看已有镜像
- 登录 1Panel 面板
- 左侧菜单选择 容器 → 镜像
- 查看镜像列表,确认微服务镜像是否已存在
步骤2: 导入镜像
- 在镜像页面点击 导入 按钮
- 选择导入方式:从文件导入
- 依次导入镜像文件:
/opt/jpwise-docker/images/jpwise-gateway.tar/opt/jpwise-docker/images/jpwise-platform.tar/opt/jpwise-docker/images/jpwise-business.tar
- 等待导入完成(每个镜像约需 1-3 分钟)
步骤3: 验证镜像导入成功
- 在镜像列表中查看:
jpwise/gateway:2.2.0-RELEASEjpwise/platform:2.2.0-RELEASEjpwise/business:2.2.0-RELEASE
- 显示镜像大小和创建时间
✅ 镜像导入成功!
4. 部署微服务
基础服务部署完成后,开始部署三个微服务:Gateway、Platform、Business。
4.1 部署网关服务(Gateway)
- 在 1Panel 中选择 容器 → 容器
- 点击 创建容器 按钮
- 填写容器配置:
基本信息:
- 容器名称:
jpwise-gateway - 镜像:
jpwise/gateway:2.2.0-RELEASE
端口映射:
- 主机端口:
30002 - 容器端口:
30002
存储卷:
- 主机路径:
/opt/jpwise-docker/logs/gateway - 容器路径:
/app/logs
网络设置(高级设置)**:
- 网络模式:
bridge(默认) - 添加容器链接:
- 容器:
jpwise-nacos - 别名:
nacos
- 容器:
其他设置:
- 重启策略:
always
- 点击 确定 创建并启动容器
- 查看容器日志,确认启动成功
验证网关启动:
- 点击容器名称
jpwise-gateway - 点击 日志 标签页
- 查找日志中的关键字:
Started JpwiseGatewayApplication
4.2 部署平台服务(Platform)
- 点击 创建容器 按钮
- 填写容器配置:
基本信息:
- 容器名称:
jpwise-platform - 镜像:
jpwise/platform:2.2.0-RELEASE
端口映射:
- 主机端口:
30003 - 容器端口:
30003
存储卷:
- 主机路径:
/opt/jpwise-docker/logs/platform - 容器路径:
/app/logs
网络设置:
- 添加容器链接:
- 容器:
jpwise-nacos,别名:nacos - 容器:
jpwise-redis,别名:redis
- 容器:
说明: 数据库连接不需要添加容器链接,直接在Nacos配置中使用数据库的实际地址即可
其他设置:
- 重启策略:
always
- 点击 确定 创建并启动容器
- 查看日志确认启动成功
4.3 部署业务服务(Business)
- 点击 创建容器 按钮
- 填写容器配置:
基本信息:
- 容器名称:
jpwise-business - 镜像:
jpwise/business:2.2.0-RELEASE
端口映射:
- 主机端口:
30004 - 容器端口:
30004
存储卷:
- 主机路径:
/opt/jpwise-docker/logs/business - 容器路径:
/app/logs
网络设置:
- 添加容器链接:
- 容器:
jpwise-nacos,别名:nacos - 容器:
jpwise-redis,别名:redis
- 容器:
说明: 数据库连接不需要添加容器链接,直接在Nacos配置中使用数据库的实际地址即可
其他设置:
- 重启策略:
always
- 点击 确定 创建并启动容器
- 查看日志确认启动成功
4.4 验证部署
4.4.1 检查容器状态
- 在 容器 → 容器 列表中
- 确认以下容器状态为 运行中:
jpwise-redisjpwise-nacosjpwise-gatewayjpwise-platformjpwise-business
- 确认数据库服务正常运行(根据部署方式检查)
4.4.2 检查服务注册
- 访问 Nacos 控制台:
http://YOUR_SERVER_IP:8848/nacos(将 YOUR_SERVER_IP 替换为实际IP) - 进入 服务管理 → 服务列表
- 选择命名空间:
dev - 确认以下服务已注册:
jpwise-gatewayjpwise-platformjpwise-business
4.4.3 访问服务
- API网关:
http://YOUR_SERVER_IP:30002 - API文档:
http://YOUR_SERVER_IP:30002/doc.html - Nacos控制台:
http://YOUR_SERVER_IP:8848/nacos
说明: 请将 YOUR_SERVER_IP 替换为实际的服务器IP地址,例如 192.168.1.100
✅ 微服务部署成功!
5. 容器管理操作
5.1 查看容器日志
- 在 容器 → 容器 列表中
- 点击目标容器名称
- 点击 日志 标签页
- 可以:
- 实时查看日志输出
- 搜索日志内容
- 下载日志文件
- 清空日志
5.2 进入容器终端
- 在容器列表中找到目标容器
- 点击右侧 操作 → 终端 图标
- 在 Web 终端中执行命令
bash
# 示例:查看容器内进程
ps aux
# 查看Java进程
jps -lvm
# 查看内存使用
free -h5.3 重启容器
重启单个容器:
- 在容器列表中找到目标容器
- 点击右侧 操作 → 重启 按钮
- 确认重启
批量重启:
- 勾选多个容器
- 点击顶部的 批量操作 → 重启
5.4 停止/启动容器
停止容器:
- 在容器列表中找到目标容器
- 点击 操作 → 停止 按钮
启动容器:
- 找到已停止的容器
- 点击 操作 → 启动 按钮
5.5 查看容器资源使用
- 选择 容器 → 监控
- 查看:
- 各容器的 CPU 使用率趋势
- 各容器的内存使用率趋势
- 网络流量统计
- 磁盘 IO 统计
5.6 查看容器详情
- 点击容器名称
- 查看:
- 基本信息(ID、镜像、状态等)
- 端口映射
- 卷挂载
- 网络配置
- 环境变量
- 资源限制
6. 更新微服务
当代码更新后,需要重新构建镜像并更新容器。
6.1 完整更新流程
步骤1:本地重新构建镜像
在开发机器上执行:
powershell
# Windows
mvn clean package -DskipTests
docker build -f docker/Dockerfile-gateway -t jpwise/gateway:2.2.0-RELEASE .
docker save jpwise/gateway:2.2.0-RELEASE -o jpwise-gateway.tarbash
# Linux/Mac
mvn clean package -DskipTests
docker build -f docker/Dockerfile-gateway -t jpwise/gateway:2.2.0-RELEASE .
docker save jpwise/gateway:2.2.0-RELEASE -o jpwise-gateway.tar步骤2:上传新镜像到服务器
方式 A:使用 1Panel 文件管理
- 登录 1Panel
- 文件 → 文件管理
- 导航到
/opt/jpwise-docker/images/ - 点击 上传 按钮
- 选择新的
jpwise-gateway.tar文件上传
方式 B:使用 SCP 命令
bash
# 请将 YOUR_SERVER_IP 替换为实际的服务器IP地址
scp jpwise-gateway.tar root@YOUR_SERVER_IP:/opt/jpwise-docker/images/步骤3:在 1Panel 中导入新镜像
- 容器 → 镜像 → 导入
- 选择导入方式:从文件导入
- 文件路径:
/opt/jpwise-docker/images/jpwise-gateway.tar - 点击 确定
- 等待导入完成
重要:导入相同名称和标签的镜像会自动覆盖旧镜像。
步骤4:重新创建容器
方式 A:停止并删除旧容器,然后创建新容器
- 容器 → 容器 → 找到
jpwise-gateway - 点击 操作 → 停止
- 点击 操作 → 删除(注意:不删除数据卷)
- 点击 创建容器 按钮
- 按照 4.1 部署网关服务 的配置重新创建容器
- 启动容器
方式 B:使用终端命令(更快)
- 在 1Panel 中选择 主机 → 终端
- 执行以下命令:
bash
# 停止并删除旧容器
docker stop jpwise-gateway
docker rm jpwise-gateway
# 重新创建容器
docker run -d \
--name jpwise-gateway \
--restart=always \
-p 30002:30002 \
-e SPRING_PROFILES_ACTIVE=dev \
-e NACOS_SERVER_ADDR=jpwise-nacos:8848 \
-e NACOS_USERNAME=nacos \
-e NACOS_PASSWORD=nacos \
-e NACOS_NAMESPACE=dev \
-e TZ=Asia/Shanghai \
--link jpwise-nacos:nacos \
-v /opt/jpwise-docker/logs/gateway:/app/logs \
jpwise/gateway:2.2.0-RELEASE步骤5:验证更新
- 查看容器日志确认启动成功
- 在 Nacos 控制台确认服务注册成功
- 访问服务验证功能
6.2 快速更新流程(推荐)
为了简化更新流程,可以在服务器上创建更新脚本。
6.2.1 创建更新脚本
在服务器上创建 /opt/jpwise-docker/update-service.sh:
bash
#!/bin/bash
# 微服务更新脚本
# 用法: ./update-service.sh gateway|platform|business
SERVICE_NAME=$1
if [ -z "$SERVICE_NAME" ]; then
echo "用法: $0 {gateway|platform|business}"
exit 1
fi
IMAGE_NAME="jpwise/${SERVICE_NAME}:2.2.0-RELEASE"
CONTAINER_NAME="jpwise-${SERVICE_NAME}"
IMAGE_FILE="/opt/jpwise-docker/images/jpwise-${SERVICE_NAME}.tar"
echo "=== 开始更新 ${SERVICE_NAME} 服务 ==="
# 1. 检查镜像文件是否存在
if [ ! -f "$IMAGE_FILE" ]; then
echo "错误: 镜像文件不存在 - $IMAGE_FILE"
exit 1
fi
# 2. 导入新镜像
echo "1. 导入镜像..."
docker load -i $IMAGE_FILE
# 3. 停止并删除旧容器
echo "2. 停止旧容器..."
docker stop $CONTAINER_NAME 2>/dev/null || true
docker rm $CONTAINER_NAME 2>/dev/null || true
# 4. 清理悬空镜像
echo "3. 清理悬空镜像..."
docker image prune -f
# 5. 根据服务类型启动新容器
echo "4. 启动新容器..."
if [ "$SERVICE_NAME" == "gateway" ]; then
docker run -d \
--name $CONTAINER_NAME \
--restart=always \
-p 30002:30002 \
-e SPRING_PROFILES_ACTIVE=dev \
-e NACOS_SERVER_ADDR=jpwise-nacos:8848 \
-e NACOS_USERNAME=nacos \
-e NACOS_PASSWORD=nacos \
-e NACOS_NAMESPACE=dev \
-e TZ=Asia/Shanghai \
--link jpwise-nacos:nacos \
-v /opt/jpwise-docker/logs/gateway:/app/logs \
$IMAGE_NAME
elif [ "$SERVICE_NAME" == "platform" ]; then
docker run -d \
--name $CONTAINER_NAME \
--restart=always \
-p 30003:30003 \
-e SPRING_PROFILES_ACTIVE=dev \
-e NACOS_SERVER_ADDR=jpwise-nacos:8848 \
-e NACOS_USERNAME=nacos \
-e NACOS_PASSWORD=nacos \
-e NACOS_NAMESPACE=dev \
-e TZ=Asia/Shanghai \
--link jpwise-nacos:nacos \
--link jpwise-redis:redis \
-v /opt/jpwise-docker/logs/platform:/app/logs \
$IMAGE_NAME
elif [ "$SERVICE_NAME" == "business" ]; then
docker run -d \
--name $CONTAINER_NAME \
--restart=always \
-p 30004:30004 \
-e SPRING_PROFILES_ACTIVE=dev \
-e NACOS_SERVER_ADDR=jpwise-nacos:8848 \
-e NACOS_USERNAME=nacos \
-e NACOS_PASSWORD=nacos \
-e NACOS_NAMESPACE=dev \
-e TZ=Asia/Shanghai \
--link jpwise-nacos:nacos \
--link jpwise-redis:redis \
-v /opt/jpwise-docker/logs/business:/app/logs \
$IMAGE_NAME
fi
# 6. 等待启动并查看日志
echo "5. 等待服务启动..."
sleep 10
echo "6. 查看启动日志..."
docker logs --tail 100 $CONTAINER_NAME
echo "=== ${SERVICE_NAME} 服务更新完成 ==="
echo ""
echo "查看实时日志: docker logs -f $CONTAINER_NAME"
echo "检查服务注册: 访问 Nacos 控制台"赋予执行权限:
bash
chmod +x /opt/jpwise-docker/update-service.sh6.2.2 使用更新脚本
上传新镜像文件后,执行:
bash
# 更新网关服务
/opt/jpwise-docker/update-service.sh gateway
# 更新平台服务
/opt/jpwise-docker/update-service.sh platform
# 更新业务服务
/opt/jpwise-docker/update-service.sh business7. 监控和维护
7.1 健康检查
定期检查容器健康状态:
- 在 1Panel 中查看容器列表
- 确认所有容器状态为 运行中
- 查看容器资源使用情况
7.2 日志管理
配置日志轮转(已在 Docker 配置中设置):
json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}定期清理日志:
bash
# 清理指定容器日志
truncate -s 0 $(docker inspect --format='{{.LogPath}}' jpwise-gateway)
# 批量清理所有容器日志
for container in $(docker ps -q); do
truncate -s 0 $(docker inspect --format='{{.LogPath}}' $container)
done7.3 数据备份
7.3.1 数据库备份
MySQL 数据库备份:
bash
# 如果数据库在宿主机或独立服务器
# 备份所有数据库
mysqldump -h数据库主机 -u用户名 -p --all-databases > /opt/jpwise-docker/backup/mysql-backup-$(date +%Y%m%d).sql
# 备份指定数据库
mysqldump -h数据库主机 -u用户名 -p jpwise_platform > /opt/jpwise-docker/backup/platform-$(date +%Y%m%d).sql
mysqldump -h数据库主机 -u用户名 -p jpwise_business > /opt/jpwise-docker/backup/business-$(date +%Y%m%d).sql
# 恢复数据
mysql -h数据库主机 -u用户名 -p < /opt/jpwise-docker/backup/mysql-backup-20250101.sql达梦数据库备份:
bash
# 使用达梦提供的备份工具
# 备份数据库
DmBackup BACKUP=/opt/jpwise-docker/backup/dm-backup-$(date +%Y%m%d).bak DATABASE=jpwise_platform
# 恢复数据库
DmRestore RESTORE=/opt/jpwise-docker/backup/dm-backup-20250101.bak DATABASE=jpwise_platform说明: 具体备份命令根据数据库部署方式和版本可能有所不同,请参考对应数据库的官方文档。
7.3.2 Redis 数据备份
bash
# 触发 RDB 快照
docker exec jpwise-redis redis-cli -a 123456.zxc SAVE
# 复制备份文件
docker cp jpwise-redis:/data/dump.rdb /opt/jpwise-docker/backup/redis-backup-$(date +%Y%m%d).rdb7.3.3 Nacos 配置备份
- 登录 Nacos 控制台
- 进入 配置管理 → 配置列表
- 点击配置右侧的 导出
- 保存配置文件到本地
或使用脚本备份:
bash
# 使用 Nacos Open API 导出配置
# 请将 YOUR_SERVER_IP 替换为实际的服务器IP地址,如果在服务器本机可使用 localhost
NACOS_ADDR="http://YOUR_SERVER_IP:8848"
NAMESPACE="dev"
NACOS_USERNAME="nacos" # Nacos用户名
NACOS_PASSWORD="nacos" # Nacos密码,如已修改请使用实际密码
curl -X GET "${NACOS_ADDR}/nacos/v1/cs/configs?export=true&group=JPWISE_GROUP&tenant=${NAMESPACE}&ids=" \
-u ${NACOS_USERNAME}:${NACOS_PASSWORD} \
-o /opt/jpwise-docker/backup/nacos-config-$(date +%Y%m%d).zip8. 常见问题排查
8.1 容器启动失败
排查步骤:
查看容器日志
- 在 1Panel 中点击容器名称 → 日志 标签页
- 查找错误信息
检查端口冲突
bash# 检查端口是否被占用 netstat -tunlp | grep 端口号检查依赖服务是否启动
- 确认 MySQL、Redis、Nacos 容器正常运行
- 检查容器之间的网络连接
8.2 服务无法注册到 Nacos
可能原因:
Nacos 未启动或未就绪
- 检查 Nacos 容器状态
- 访问 Nacos 控制台确认服务可用
网络连接问题
- 检查容器是否正确链接到 Nacos
- 进入容器测试连接:bash
docker exec jpwise-gateway ping jpwise-nacos docker exec jpwise-gateway curl http://jpwise-nacos:8848/nacos/
配置错误
- 检查环境变量配置
- 确认 Nacos 命名空间和 Group 配置正确
8.3 数据库连接失败
排查步骤:
检查数据库服务是否正常运行
bash# 如果数据库在宿主机 systemctl status mysqld # MySQL # systemctl status DmServiceDMSERVER # 达梦 # 如果在独立服务器,登录服务器检查 # 或使用数据库客户端工具测试连接检查数据库是否已创建
bash# MySQL mysql -h数据库主机 -u用户名 -p -e "SHOW DATABASES;" # 达梦 # 使用达梦管理工具或DM客户端检查检查网络连通性
bash# 从容器内测试数据库连接 docker exec jpwise-platform ping 数据库主机地址 docker exec jpwise-platform telnet 数据库主机地址 3306 # MySQL # docker exec jpwise-platform telnet 数据库主机地址 5236 # 达梦检查防火墙配置
bash# 确认数据库端口已开放 firewall-cmd --list-ports检查 Nacos 配置中的数据库连接信息
- 确认主机地址、端口、用户名、密码正确
- 如果数据库在宿主机,确认使用了正确的访问地址
8.4 Redis 连接失败
排查步骤:
检查 Redis 容器状态
bashdocker ps | grep redis docker logs jpwise-redis测试 Redis 连接
bashdocker exec jpwise-redis redis-cli -a 123456.zxc ping检查容器链接
bashdocker exec jpwise-platform ping jpwise-redis
8.5 内存不足
解决方案:
查看容器资源使用
- 在 1Panel 容器 → 监控 中查看
调整 JVM 内存参数
- 修改容器启动命令中的 JVM 参数
- 或在 Dockerfile 中调整
限制容器资源
bash# 重新创建容器时添加资源限制 docker run -d \ --name jpwise-gateway \ --memory="2g" \ --cpus="2" \ ...其他参数
8.6 查看完整错误堆栈
bash
# 查看容器完整日志
docker logs jpwise-gateway 2>&1 | less
# 搜索错误
docker logs jpwise-gateway 2>&1 | grep -i error
# 导出日志到文件
docker logs jpwise-gateway > /tmp/gateway-error.log 2>&1附录
A. 端口清单
| 服务 | 端口 | 说明 |
|---|---|---|
| MySQL | 3306 | MySQL数据库(如使用) |
| 达梦 | 5236 | 达梦数据库(如使用) |
| Redis | 6379 | 缓存服务 |
| Nacos | 8848 | Nacos控制台和HTTP API |
| Nacos | 9848 | 客户端gRPC |
| Nacos | 9849 | 服务端gRPC |
| Minio | 9000 | Minio API |
| Minio | 9090 | Minio控制台 |
| Gateway | 30002 | 网关服务 |
| Platform | 30003 | 平台服务 |
| Business | 30004 | 业务服务 |
| OpenResty | 80 | HTTP(1Panel) |
| OpenResty | 443 | HTTPS(1Panel) |
注意:
- 生产环境建议只开放 80、443 端口,其他服务端口不对外暴露
- 数据库端口根据实际部署方式决定是否开放
- 前端通过 1Panel 的 OpenResty 反向代理部署
B. Docker 常用命令速查
bash
# 容器管理
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
docker start 容器名 # 启动容器
docker stop 容器名 # 停止容器
docker restart 容器名 # 重启容器
docker rm 容器名 # 删除容器
docker rm -f 容器名 # 强制删除容器
# 日志查看
docker logs 容器名 # 查看容器日志
docker logs -f 容器名 # 实时查看日志
docker logs --tail 100 容器名 # 查看最近100行
docker logs --since 30m 容器名 # 查看最近30分钟
# 容器操作
docker exec -it 容器名 /bin/sh # 进入容器
docker exec 容器名 命令 # 在容器中执行命令
docker cp 本地文件 容器名:/容器路径 # 复制文件到容器
docker cp 容器名:/容器路径 本地路径 # 从容器复制文件
# 镜像管理
docker images # 查看镜像列表
docker load -i 镜像文件.tar # 导入镜像
docker save 镜像名 -o 镜像文件.tar # 导出镜像
docker rmi 镜像名 # 删除镜像
docker image prune -f # 清理悬空镜像
# 资源监控
docker stats # 查看容器资源使用
docker stats 容器名 # 查看指定容器
docker inspect 容器名 # 查看容器详情C. 快速启动脚本
创建 /opt/jpwise-docker/start-all.sh:
bash
#!/bin/bash
echo "========================================="
echo "JPwise 微服务容器化部署启动脚本"
echo "========================================="
# 检查Docker服务
if ! systemctl is-active --quiet docker; then
echo "启动 Docker 服务..."
systemctl start docker
fi
# 启动基础服务
echo ""
echo "1. 启动基础服务..."
docker start jpwise-redis
sleep 5
docker start jpwise-nacos
# 等待 Nacos 就绪
echo ""
echo "2. 等待 Nacos 启动(约30秒)..."
sleep 30
# 启动微服务
echo ""
echo "3. 启动微服务..."
docker start jpwise-gateway
docker start jpwise-platform
docker start jpwise-business
# 等待微服务启动
echo ""
echo "4. 等待微服务启动(约30秒)..."
sleep 30
# 检查服务状态
echo ""
echo "========================================="
echo "服务状态:"
echo "========================================="
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep jpwise
echo ""
echo "========================================="
echo "访问地址:"
echo "========================================="
IP=$(hostname -I | awk '{print $1}')
echo "Nacos控制台: http://${IP}:8848/nacos"
echo "API网关: http://${IP}:30002"
echo "API文档: http://${IP}:30002/doc.html"
echo "========================================="
echo "查看日志: docker logs -f 容器名"
echo "========================================="赋予执行权限:
bash
chmod +x /opt/jpwise-docker/start-all.sh使用方法:
bash
/opt/jpwise-docker/start-all.shD. 生产环境优化建议
D.1 安全加固
- 修改默认密码:修改 MySQL、Redis、Nacos、Minio 的默认密码
- 关闭不必要的端口:生产环境只暴露必要的端口
- 使用 HTTPS:为 Nginx 配置 SSL 安全证书
- 网络隔离:使用 Docker 自定义网络隔离服务
- 启用防火墙:配置 iptables 或 firewalld
D.2 性能优化
JVM 参数调优:
- 根据服务器配置调整堆内存大小
- 使用 G1GC 垃圾回收器
- 配置合理的 GC 参数
数据库连接池:
- 调整 HikariCP 最大连接数
- 配置连接超时时间
Redis 持久化:
- 根据需求选择 RDB 或 AOF
- 配置合理的持久化策略
容器资源限制:
- 为每个容器设置 CPU 和内存限制
- 避免资源争抢
D.3 高可用部署
- Nacos 集群:部署 3 节点 Nacos 集群
- MySQL 主从复制:配置 MySQL 主从或使用 MySQL 集群
- Redis 哨兵/集群:使用 Redis Sentinel 或 Redis Cluster
- 微服务多实例:每个微服务至少部署 2 个实例
- 负载均衡:使用 Nginx 或其他负载均衡器
💡 部署提示:
- 使用 1Panel 可视化面板:图形化操作,简单直观
- 镜像构建:在本地开发机构建,然后导出上传到服务器
- 配置管理:统一使用 Nacos 配置中心管理配置
📖 参考文档:
- 传统部署方式请参考 linux-microservice.md
- 1Panel 官方文档: https://1panel.cn/docs/
- Docker 官方文档: https://docs.docker.com/
🔧 技术支持:
- 1Panel GitHub: https://github.com/1Panel-dev/1Panel
- Docker GitHub: https://github.com/docker