2026-06-29 13:17:58 +08:00

216 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 <旧镜像>