216 lines
5.0 KiB
Markdown
Raw Permalink Normal View History

2026-06-29 13:17:58 +08:00
# minex-invest-task
项目简介
minex-invest-task 是基于 Spring Boot 3.2 和 JDK 21 的后端服务,提供投资相关的业务 API。
核心特点:
支持 RESTful API 和 gRPC 接口。
使用 MySQL 数据库,并通过 jOOQ 生成类型安全的数据库访问代码。
使用 Protobuf 定义 gRPC 消息结构。
集成 Swagger / OpenAPI,方便接口测试和文档查看。
支持 Docker 容器化部署。
环境要求
操作系统:Linux / Windows
JDK:21(OpenJDK 或 Oracle JDK 均可)
application.yml 配置
spring:
application:
name: minex-invest-task-admin
config:
import: "optional:nacos:minex-invest-task-admin.yml?server-addr=${NACOS_DISCOVERY_SERVER_ADDR}&namespace=${NACOS_DISCOVERY_NAMESPACE}&username=${NACOS_DISCOVERY_USERNAME}&password=${NACOS_DISCOVERY_PASSWORD}&group=DEFAULT_GROUP"
cloud:
nacos:
config:
enable-local-cache: false
server-addr: ${nacos.discovery.server-addr}
username: ${nacos.discovery.username}
password: ${nacos.discovery.password}
access-key: ${nacos.discovery.access-key}
secret-key: ${nacos.discovery.secret-key}
namespace: ${nacos.discovery.namespace}
file-extension: yml
shared-configs:
- data-id: minex-invest-task-admin.yml
refresh: true
nacos 配置
server:
port: 8082
logging:
config: classpath:logback.xml
xxl:
job:
admin:
addresses: http://172.31.43.67:8080/job-admin
accessToken: default_token
timeout: 3
executor:
appname: xxl-job-executor-sample
address:
ip:
port: 9999
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: 30
minexinvesturl: http://172.31.43.67:8089/
配置说明:
addresses: http://172.31.43.67:8080/job-admin 为 admin 发布后地址
minexinvesturl: http://172.31.43.67:8089/ 为 minex-invest-server-api 发布后地址
Maven:3.8+
数据库:MySQL 8.x
Docker:20.x 以上(用于容器化部署)
端口:8089(可自定义)
Maven 构建
克隆项目
git clone [<repository-url>](https://gitlab.armonia.fund/cex/backend/minex/minex-invest-task.git)
cd minex-invest-server-api
编译打包
mvn clean install
编译完成后,生成 jar 文件:target/xxl-job-executor-sample-springboot-3.2.0.jar
选择环境
set JAVA_HOME=C:\Program Files\Java\jdk-21
set PATH=%JAVA_HOME%\bin;%PATH%
java -version
运行
java -jar target\xxl-job-executor-sample-springboot-3.2.0.jar --spring.profiles.active=prod
Docker 部署
Dockerfile 说明
基于官方 OpenJDK 21 镜像:eclipse-temurin:21-jdk-jammy
工作目录:/app
复制 jar 文件到 /app
暴露端口:8089
支持通过环境变量 SPRING_PROFILES_ACTIVE 切换 Spring 配置环境(dev / prod)
FROM eclipse-temurin:21-jdk-jammy
WORKDIR /app
COPY xxl-job-executor-sample-springboot-3.2.0.jar ./
EXPOSE 8089
ENV SPRING_PROFILES_ACTIVE=prod
CMD ["sh", "-c", "java -jar xxl-job-executor-sample-springboot-3.2.0.jar --spring.profiles.active=${SPRING_PROFILES_ACTIVE}"]
示例启动脚本(deploy.sh):
#!/bin/bash
cd /home/java/ || { echo "目录不存在: /home/java/"; exit 1; }
CONTAINER_NAME="gts-api"
IMAGE_NAME="xxl-job-executor-sample-springboot:1.0.0"
HOST_MAPPINGS=(
"bos-asset.minex.support:52.77.33.242"
"bos-quote.minex.support:52.77.33.242"
)
# 停止并删除旧容器
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
fi
# 删除旧镜像
if [ "$(docker images -q $IMAGE_NAME)" ]; then
docker rmi -f $IMAGE_NAME
fi
# 构建新镜像
docker build -t $IMAGE_NAME .
if [ $? -ne 0 ]; then
echo "镜像构建失败"
exit 1
fi
# 拼接 --add-host 参数
ADD_HOST_ARGS=""
for mapping in "${HOST_MAPPINGS[@]}"; do
ADD_HOST_ARGS+=" --add-host $mapping"
done
# 启动新容器
docker run -d -p 8089:8089 --name $CONTAINER_NAME $ADD_HOST_ARGS $IMAGE_NAME
if [ $? -ne 0 ]; then
echo "容器启动失败"
exit 1
fi
echo "===== 部署完成 ====="
部署流程示意
上传 jar 文件和 Dockerfile / deploy.sh 到服务器目录 /home/java/
给脚本执行权限:
chmod +x deploy.sh
执行部署:
./deploy.sh
部署完成后访问服务:
http://<服务器IP>:8089
配置说明
Spring Profile
默认使用 prod 配置,可通过 -e SPRING_PROFILES_ACTIVE=dev 切换开发环境。
端口
默认映射 8089,可在 docker run -p <hostPort>:<containerPort> 修改。
宿主机映射
通过 --add-host 配置内网服务访问。
注意事项
确保服务器已安装 Docker 并能拉取官方镜像。
部署前请检查端口占用,避免冲突。
数据库连接信息在 Spring 配置文件中管理,请勿硬编码到 jar 包。
每次部署脚本会 删除旧容器和旧镜像,请注意数据持久化(可挂载 volume)。
日志查看
docker logs -f gts-api
回滚操作
如果新容器异常:
docker stop gts-api
docker rm gts-api
docker run -d -p 8089:8089 --name gts-api <旧镜像>