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

5.0 KiB
Raw Blame History

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 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 : 修改。

宿主机映射 通过 --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 <旧镜像>