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

240 lines
5.6 KiB
Markdown
Raw Permalink 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-admin
项目简介
minex-invest-task-admin 是基于 Spring Boot 3.2 和 JDK 21 的后端服务,提供投资相关的业务 API。
核心特点:
支持 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 配置
# -------------------- web --------------------
server:
port: 8080
servlet:
context-path: /xxl-job-admin
# -------------------- actuator --------------------
management:
endpoints:
web:
base-path: /actuator
health:
mail:
enabled: false
# -------------------- resources --------------------
spring:
mvc:
servlet:
load-on-startup: 0
static-path-pattern: /static/**
web:
resources:
static-locations: classpath:/static/
freemarker:
templateLoaderPath: classpath:/templates/
suffix: .ftl
charset: UTF-8
request-context-attribute: request
settings:
number_format: 0.##########
new_builtin_class_resolver: safer
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://18.178.59.115:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
username: root
password: D22+51Ce=3d
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
minimum-idle: 10
maximum-pool-size: 30
auto-commit: true
idle-timeout: 30000
pool-name: HikariCP
max-lifetime: 900000
connection-timeout: 10000
connection-test-query: SELECT 1
validation-timeout: 1000
mail:
host: smtp.qq.com
port: 25
username: xxx@qq.com
from: xxx@qq.com
password: xxx
properties:
mail.smtp.auth: true
mail.smtp.starttls.enable: true
mail.smtp.starttls.required: true
mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
# -------------------- mybatis --------------------
mybatis:
mapper-locations: classpath:/mapper/*Mapper.xml
# -------------------- xxl-job --------------------
xxl:
job:
accessToken: default_token
timeout: 3
i18n: zh_CN
triggerpool:
fast:
max: 200
slow:
max: 100
logretentiondays: 30
# -------------------- xxl-sso --------------------
xxl-sso:
token:
key: xxl_job_login_token
timeout: 604800000
client:
excluded:
paths:
login:
path: /auth/login
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-admin-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-admin-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-admin-3.2.0.jar ./
EXPOSE 8089
ENV SPRING_PROFILES_ACTIVE=prod
CMD ["sh", "-c", "java -jar xxl-job-admin-3.2.0.jar --spring.profiles.active=${SPRING_PROFILES_ACTIVE}"]
示例启动脚本:
#!/bin/bash
# -*- coding: utf-8 -*-
# 项目目录
cd /home/java/ || { echo "目录不存在: /home/java/"; exit 1; }
# 容器名和镜像名
CONTAINER_NAME="xxl-job-admin"
IMAGE_NAME="xxl-job-admin-3.2.0"
# 宿主机 host 映射(可选,根据需要调整)
HOST_MAPPINGS=(
"bos-asset.minex.support:52.77.33.242"
"bos-quote.minex.support:52.77.33.242"
)
echo "===== 停止并删除旧容器 ====="
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
echo "旧容器已删除"
else
echo "不存在旧容器"
fi
echo "===== 删除旧镜像 ====="
if [ "$(docker images -q $IMAGE_NAME)" ]; then
docker rmi -f $IMAGE_NAME
echo "旧镜像已删除"
else
echo "不存在旧镜像"
fi
echo "===== 构建新镜像 ====="
docker build -t $IMAGE_NAME .
if [ $? -ne 0 ]; then
echo "镜像构建失败"
exit 1
fi
echo "===== 启动新容器 ====="
# 拼接 --add-host 参数
ADD_HOST_ARGS=""
for mapping in "${HOST_MAPPINGS[@]}"; do
ADD_HOST_ARGS+=" --add-host $mapping"
done
# 启动容器
docker run -d -p 8080:8080 \
--name $CONTAINER_NAME \
$ADD_HOST_ARGS \
-e SPRING_PROFILES_ACTIVE=prod \
-e SPRING_CLOUD_NACOS_CONFIG_ENABLED=false \
$IMAGE_NAME
if [ $? -ne 0 ]; then
echo "容器启动失败"
exit 1
fi
echo "===== XXL-JOB Admin 发布完成 ====="