mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
[dev] add new module: OhMyAgent
This commit is contained in:
parent
c5c7f7fd71
commit
4087c876e3
@ -1,5 +1,5 @@
|
||||
# 基础镜像(由于OhMyScheduler-Server的运行需要Maven和Git环境,就自己打包了一个镜像)
|
||||
FROM tjqq/jdk-maven-git:8
|
||||
# 基础镜像
|
||||
FROM openjdk:8
|
||||
# 维护者
|
||||
MAINTAINER tengjiqi@gmail.com
|
||||
# 设置环境变量
|
||||
@ -15,5 +15,4 @@ RUN mkdir -p /root/oms-server
|
||||
# 挂载数据卷,将文件直接输出到宿主机(注意,此处挂载的是匿名卷,即在宿主机位置随机)
|
||||
VOLUME /root/oms-server
|
||||
# 启动应用
|
||||
ENTRYPOINT ["sh","-c","java $PARAMS -jar /oms-server.jar"]
|
||||
|
||||
ENTRYPOINT ["sh","-c","java -jar /oms-server.jar $PARAMS"]
|
74
oh-my-scheduler-worker-agent/pom.xml
Normal file
74
oh-my-scheduler-worker-agent/pom.xml
Normal file
@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>oh-my-scheduler</artifactId>
|
||||
<groupId>com.github.kfcfans</groupId>
|
||||
<version>1.0.0</version>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>oh-my-scheduler-worker-agent</artifactId>
|
||||
<version>1.2.0</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
|
||||
<properties>
|
||||
<oms.worker.version>1.2.0</oms.worker.version>
|
||||
<logback.version>1.2.3</logback.version>
|
||||
<picocli.version>4.3.2</picocli.version>
|
||||
|
||||
<spring.boot.version>2.2.6.RELEASE</spring.boot.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.kfcfans</groupId>
|
||||
<artifactId>oh-my-scheduler-worker</artifactId>
|
||||
<version>${oms.worker.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- java cli 工具 -->
|
||||
<dependency>
|
||||
<groupId>info.picocli</groupId>
|
||||
<artifactId>picocli</artifactId>
|
||||
<version>${picocli.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-core</artifactId>
|
||||
<version>${logback.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<version>${logback.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
<!-- 谁说SpringBoot的打包插件只能给SpringBoot用的?省的我写一堆配置还有BUG... -->
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<version>${spring.boot.version}</version>
|
||||
<configuration>
|
||||
<mainClass>com.github.kfcfans.oms.worker.MainApplication</mainClass>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
@ -0,0 +1,59 @@
|
||||
package com.github.kfcfans.oms.worker;
|
||||
|
||||
import com.github.kfcfans.oms.worker.common.OhMyConfig;
|
||||
import com.github.kfcfans.oms.worker.common.constants.StoreStrategy;
|
||||
import com.google.common.base.Splitter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import picocli.CommandLine;
|
||||
import picocli.CommandLine.Command;
|
||||
import picocli.CommandLine.Option;
|
||||
|
||||
/**
|
||||
* 启动类
|
||||
*
|
||||
* @author tjq
|
||||
* @since 2020/5/20
|
||||
*/
|
||||
@Slf4j
|
||||
@Command(name = "OhMyAgent", mixinStandardHelpOptions = true, version = "1.2.0", description = "OhMyScheduler-Worker代理")
|
||||
public class MainApplication implements Runnable {
|
||||
|
||||
@Option(names = {"-a", "--app"}, description = "worker-agent名称,可通过调度中心控制台创建", required = true)
|
||||
private String appName;
|
||||
|
||||
@Option(names = {"-p", "--persistence"}, description = "存储策略,枚举值,DISK 或 MEMORY")
|
||||
private String storeStrategy = "DISK";
|
||||
|
||||
@Option(names = {"-s", "--server"}, description = "调度中心地址,多值英文逗号分隔,格式 IP:Port OR domain")
|
||||
private String server = "127.0.0.1:7700";
|
||||
|
||||
@Option(names = {"-l", "--length"}, description = "返回值最大长度")
|
||||
private int length = 1024;
|
||||
|
||||
public static void main(String[] args) {
|
||||
CommandLine commandLine = new CommandLine(new MainApplication());
|
||||
commandLine.execute(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
OhMyConfig cfg = new OhMyConfig();
|
||||
try {
|
||||
|
||||
cfg.setAppName(appName);
|
||||
cfg.setServerAddress(Splitter.on(",").splitToList(server));
|
||||
cfg.setStoreStrategy(StoreStrategy.MEMORY.name().equals(storeStrategy) ? StoreStrategy.MEMORY : StoreStrategy.DISK);
|
||||
cfg.setMaxResultLength(length);
|
||||
|
||||
OhMyWorker ohMyWorker = new OhMyWorker();
|
||||
ohMyWorker.setConfig(cfg);
|
||||
|
||||
ohMyWorker.init();
|
||||
}catch (Exception e) {
|
||||
log.error("[OhMyAgent] startup failed by config: {}.", cfg, e);
|
||||
ExceptionUtils.rethrow(e);
|
||||
}
|
||||
}
|
||||
}
|
68
oh-my-scheduler-worker-agent/src/main/resources/logback.xml
Normal file
68
oh-my-scheduler-worker-agent/src/main/resources/logback.xml
Normal file
@ -0,0 +1,68 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- 生产环境日志 -->
|
||||
<configuration>
|
||||
|
||||
<!--
|
||||
日志路径,注意权限问题,否则无法打印日志。
|
||||
大坑记录:`~/logs`不会在用户目录下创建文件夹,而是在项目目录下创建名为~的文件夹
|
||||
-->
|
||||
<property name="LOG_PATH" value="${user.home}/oms/logs"/>
|
||||
|
||||
<property name="CONSOLE_LOG_PATTERN"
|
||||
value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>
|
||||
|
||||
<!-- Console 输出设置 -->
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||
<charset>utf8</charset>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>debug</level>
|
||||
<onMatch>DENY</onMatch>
|
||||
<onMismatch>NEUTRAL</onMismatch>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- 系统所有异常日志(ERROR)双写 start -->
|
||||
<appender name="ERROR_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_PATH}/oms-server-error.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<FileNamePattern>${LOG_PATH}/oms-agent-error.%d{yyyy-MM-dd}.log</FileNamePattern>
|
||||
<MaxHistory>7</MaxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>ERROR</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
</appender>
|
||||
<!-- 系统所有异常日志(ERROR)双写 end -->
|
||||
|
||||
|
||||
<!-- 系统主日志 start -->
|
||||
<appender name="DEFAULT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_PATH}/oms-server-application.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<FileNamePattern>${LOG_PATH}/oms-agent-application.%d{yyyy-MM-dd}.log</FileNamePattern>
|
||||
<MaxHistory>7</MaxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
<append>true</append>
|
||||
</appender>
|
||||
<!-- 系统主日志 日志 end -->
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="DEFAULT_APPENDER"/>
|
||||
<appender-ref ref="ERROR_APPENDER"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</root>
|
||||
|
||||
</configuration>
|
@ -1,19 +0,0 @@
|
||||
#!/bin/bash
|
||||
# -p:允许后面跟一个字符串作为提示 -r:保证读入的是原始内容,不会发生任何转义
|
||||
read -r -p "请输入Dockedr镜像版本:" version
|
||||
echo "即将构建的Docker镜像:oms-server:$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 others/oms-server.jar
|
||||
ls -l others/oms-server.jar
|
||||
echo "================== 构建应用镜像 =================="
|
||||
docker build -t tjqq/oms-server:$version others/. || exit
|
||||
echo "================== (关闭老应用)括号代表非必须,只是顺便运行下新版本进行测试 =================="
|
||||
docker stop oms-server
|
||||
echo "================== (删除老容器) =================="
|
||||
docker container rm oms-server
|
31
others/script/build_server_docker.sh
Executable file
31
others/script/build_server_docker.sh
Executable file
@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
# -p:允许后面跟一个字符串作为提示 -r:保证读入的是原始内容,不会发生任何转义
|
||||
read -r -p "请输入Dockedr镜像版本:" version
|
||||
echo "即将构建的Docker镜像:oms-server:$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
|
||||
echo "================== 关闭老应用 =================="
|
||||
docker stop oms-server
|
||||
echo "================== 删除老容器 =================="
|
||||
docker container rm oms-server
|
||||
echo "================== 删除旧镜像 =================="
|
||||
docker rmi -f tjqq/oms-server:$version
|
||||
echo "================== 构建应用镜像 =================="
|
||||
docker build -t tjqq/oms-server:$version oh-my-scheduler-server/. || 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
|
Loading…
x
Reference in New Issue
Block a user