240 lines
5.6 KiB
Markdown
240 lines
5.6 KiB
Markdown
# 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 发布完成 ====="
|