mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
[dev] modify build script
This commit is contained in:
parent
4087c876e3
commit
e5ae446c3a
15
README.md
15
README.md
@ -16,6 +16,21 @@ OhMyScheduler是基于Akka架构的一款分布式调度平台与分布式计算
|
||||
* 有需要全部机器一同执行的业务场景:如日志清理。
|
||||
* 有需要分布式处理的业务场景:比如需要更新一大批数据,单机执行耗时非常长,可以使用Map/MapReduce处理器完成任务的分发,调动整个集群加速计算。
|
||||
|
||||
### 同类产品对比
|
||||
||QuartZ|xxl-job|SchedulerX 2.0|OhMyScheduler|
|
||||
|----|----|----|----|----|
|
||||
|定时类型|CRON|CRON|CRON、固定频率、固定延迟、OpenAPI|CRON、固定频率、固定延迟、OpenAPI|
|
||||
|任务类型|内置Java|内置Java、GLUE Java、Shell、Python等脚本|内置Java、外置Java(FatJar)、Shell、Python等脚本|内置Java、外置Java(容器)、Shell、Python等脚本|
|
||||
|分布式任务|无|静态分片|MapReduce动态分片|MapReduce动态分片|
|
||||
|在线任务治理|不支持|支持|支持|支持|
|
||||
|日志白屏化|不支持|支持|不支持|支持|
|
||||
|调度方式及性能|基于数据库锁,有性能瓶颈|基于数据库锁,有性能瓶颈|不详|无锁化设计,性能强劲无上限|
|
||||
|报警监控|无|邮件|短信|邮件,提供接口允许开发者自定义开发|
|
||||
|系统依赖|MySQL|MySQL|人民币(公测期间免费,哎,帮打个广告吧)|任意Spring Data Jpa支持的关系型数据库(MySQL、Oracle...)|
|
||||
|DAG工作流|不支持|不支持|支持|暂不支持,有明确开发计划|
|
||||
|
||||
|
||||
|
||||
# 接入流程(文档不要太详细,简单强大兼得说的就是在下~)
|
||||
1. [项目部署及初始化](./others/doc/SystemInitGuide.md)
|
||||
2. [处理器开发](./others/doc/ProcessorDevGuide.md)
|
||||
|
16
oh-my-scheduler-worker-agent/Dockerfile
Normal file
16
oh-my-scheduler-worker-agent/Dockerfile
Normal file
@ -0,0 +1,16 @@
|
||||
# 没有 javac 需求,用 JRE 镜像
|
||||
FROM openjdk:8-jre-slim
|
||||
MAINTAINER tengjiqi@gmail.com
|
||||
|
||||
ENV APP_NAME=oh-my-scheduler-worker-agent
|
||||
ENV PARAMS=""
|
||||
|
||||
COPY oms-agent.jar /oms-agent.jar
|
||||
# 暴露端口(HTTP + AKKA-Server + AKKA-Client)
|
||||
EXPOSE 7700 10086 27777
|
||||
# 创建 docker 文件目录(盲猜这是用户目录)
|
||||
RUN mkdir -p /root/oms-agent
|
||||
# 挂载数据卷,将文件直接输出到宿主机(注意,此处挂载的是匿名卷,即在宿主机位置随机)
|
||||
VOLUME /root/oms
|
||||
# 启动应用
|
||||
ENTRYPOINT ["sh","-c","java -jar /oms-agent.jar $PARAMS"]
|
@ -1,3 +1,16 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 50724
|
||||
Source Schema : oms-product
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 50724
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 20/05/2020 16:28:20
|
||||
*/
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
@ -14,13 +27,32 @@ CREATE TABLE `app_info` (
|
||||
`gmt_modified` datetime(6) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `appNameUK` (`app_name`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for instance_log
|
||||
-- Table structure for container_info
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `instance_log`;
|
||||
CREATE TABLE `instance_log` (
|
||||
DROP TABLE IF EXISTS `container_info`;
|
||||
CREATE TABLE `container_info` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`app_id` bigint(20) DEFAULT NULL,
|
||||
`container_name` varchar(255) DEFAULT NULL,
|
||||
`gmt_create` datetime(6) DEFAULT NULL,
|
||||
`gmt_modified` datetime(6) DEFAULT NULL,
|
||||
`last_deploy_time` datetime(6) DEFAULT NULL,
|
||||
`source_info` varchar(255) DEFAULT NULL,
|
||||
`source_type` int(11) DEFAULT NULL,
|
||||
`status` int(11) DEFAULT NULL,
|
||||
`version` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `containerNameUK` (`container_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for instance_info
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `instance_info`;
|
||||
CREATE TABLE `instance_info` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`actual_trigger_time` bigint(20) DEFAULT NULL,
|
||||
`app_id` bigint(20) DEFAULT NULL,
|
||||
@ -36,9 +68,10 @@ CREATE TABLE `instance_log` (
|
||||
`status` int(11) NOT NULL,
|
||||
`task_tracker_address` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `IDX1ha9qjdw952k1c22gkht50unp` (`job_id`),
|
||||
KEY `IDXckliwovavlr2s0uh14n94yfmc` (`app_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4;
|
||||
KEY `IDX5b1nhpe5je7gc5s1ur200njr7` (`job_id`),
|
||||
KEY `IDXjnji5lrr195kswk6f7mfhinrs` (`app_id`),
|
||||
KEY `IDXa98hq3yu0l863wuotdjl7noum` (`instance_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for job_info
|
||||
@ -72,7 +105,7 @@ CREATE TABLE `job_info` (
|
||||
`time_expression_type` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `IDXk2xprmn3lldmlcb52i36udll1` (`app_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for oms_lock
|
||||
@ -83,10 +116,11 @@ CREATE TABLE `oms_lock` (
|
||||
`gmt_create` datetime(6) DEFAULT NULL,
|
||||
`gmt_modified` datetime(6) DEFAULT NULL,
|
||||
`lock_name` varchar(255) DEFAULT NULL,
|
||||
`max_lock_time` bigint(20) DEFAULT NULL,
|
||||
`ownerip` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `lockNameUK` (`lock_name`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for server_info
|
||||
@ -99,7 +133,7 @@ CREATE TABLE `server_info` (
|
||||
`ip` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `UKtk8ytgpl7mpukhnvhbl82kgvy` (`ip`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for user_info
|
||||
|
@ -1,31 +1,60 @@
|
||||
#!/bin/bash
|
||||
# -p:允许后面跟一个字符串作为提示 -r:保证读入的是原始内容,不会发生任何转义
|
||||
read -r -p "请输入Dockedr镜像版本:" version
|
||||
echo "即将构建的Docker镜像:oms-server:$version"
|
||||
echo "即将构建的 server 镜像:oms-server:$version"
|
||||
echo "即将构建的 agent 镜像:oms-agent:$version"
|
||||
read -r -p "任意键继续:"
|
||||
|
||||
# 一键部署脚本,请勿挪动脚本
|
||||
cd `dirname $0`/../.. || exit
|
||||
echo "================== 构建 jar =================="
|
||||
mvn clean package -DskipTests -Pdev -U -e
|
||||
echo "================== 拷贝 jar =================="
|
||||
/bin/cp -rf oh-my-scheduler-server/target/*.jar oh-my-scheduler-server/oms-server.jar
|
||||
ls -l oh-my-scheduler-server/oms-server.jar
|
||||
|
||||
read -r -p "是否进行maven构建(y/n):" needmvn
|
||||
if [ "$needmvn" = "y" ] || [ "$needmvn" = "Y" ]; then
|
||||
echo "================== 构建 jar =================="
|
||||
mvn clean package -DskipTests -Pdev -U -e
|
||||
echo "================== 拷贝 jar =================="
|
||||
/bin/cp -rf oh-my-scheduler-server/target/*.jar oh-my-scheduler-server/oms-server.jar
|
||||
/bin/cp -rf oh-my-scheduler-worker-agent/target/*.jar oh-my-scheduler-worker-agent/oms-agent.jar
|
||||
ls -l oh-my-scheduler-server/oms-server.jar
|
||||
ls -l oh-my-scheduler-worker-agent/oms-agent.jar
|
||||
fi
|
||||
|
||||
echo "================== 关闭老应用 =================="
|
||||
docker stop oms-server
|
||||
docker stop oms-agent
|
||||
echo "================== 删除老容器 =================="
|
||||
docker container rm oms-server
|
||||
docker container rm oms-agent
|
||||
echo "================== 删除旧镜像 =================="
|
||||
docker rmi -f tjqq/oms-server:$version
|
||||
docker rmi -f tjqq/oms-agent:$version
|
||||
echo "================== 构建应用镜像 =================="
|
||||
docker build -t tjqq/oms-server:$version oh-my-scheduler-server/. || exit
|
||||
docker build -t tjqq/oms-agent:$version oh-my-scheduler-worker-agent/. || exit
|
||||
echo "================== 准备启动应用 =================="
|
||||
# 启动应用(端口映射、数据路径挂载)
|
||||
## -d:后台运行
|
||||
## -p:指定端口映射,容器端口:宿主机端口
|
||||
## --name:指定容器名称
|
||||
## -v(--volume):挂载目录,宿主机目录:docker内目录,写入docker内路径的数据会被直接写到宿主机上,常用于日志文件
|
||||
## -net=host:容器和宿主机共享网络(容器直接使用宿主机IP,性能最好,但网络隔离较差)
|
||||
docker run -d -e PARAMS="--spring.profiles.active=product" -p 7700:7700 -p 10086:10086 -p 27777:27777 --name oms-server -v ~/docker/oms-server:/root/oms-server tjqq/oms-server:$version
|
||||
sleep 1
|
||||
tail --pid=$$ -f -n 1000 ~/docker/oms-server/application.log
|
||||
|
||||
read -r -p "是否正式发布该镜像(y/n):" needrelease
|
||||
if [ "$needrelease" = "y" ] || [ "$needrelease" = "Y" ]; then
|
||||
read -r -p "三思!请确保当前处于已发布的Master分支!(y/n):" needrelease
|
||||
if [ "$needrelease" = "y" ] || [ "$needrelease" = "Y" ]; then
|
||||
echo "================== 正在推送 server 镜像到中央仓库 =================="
|
||||
docker push tjqq/oms-server:$version
|
||||
echo "================== 正在推送 agent 镜像到中央仓库 =================="
|
||||
docker push tjqq/oms-agent:$version
|
||||
fi
|
||||
fi
|
||||
|
||||
read -r -p "是否启动 server & agent(y/n):" startup
|
||||
if [ "$startup" = "y" ] || [ "$startup" = "Y" ]; then
|
||||
# 启动应用(端口映射、数据路径挂载)
|
||||
## -d:后台运行
|
||||
## -p:指定端口映射,容器端口:宿主机端口
|
||||
## --name:指定容器名称
|
||||
## -v(--volume):挂载目录,宿主机目录:docker内目录,写入docker内路径的数据会被直接写到宿主机上,常用于日志文件
|
||||
## -net=host:容器和宿主机共享网络(容器直接使用宿主机IP,性能最好,但网络隔离较差)
|
||||
docker run -d -e PARAMS="--spring.profiles.active=product" -p 7700:7700 -p 10086:10086 -p 27777:27777 --name oms-server -v ~/docker/oms-server:/root/oms-server tjqq/oms-server:$version
|
||||
sleep 1
|
||||
tail --pid=$$ -f -n 1000 ~/docker/oms-server/application.log
|
||||
|
||||
docker run -d -e PARAMS="--app oms-agent-test"
|
||||
fi
|
Loading…
x
Reference in New Issue
Block a user