diff --git a/others/Dockerfile b/oh-my-scheduler-server/Dockerfile similarity index 73% rename from others/Dockerfile rename to oh-my-scheduler-server/Dockerfile index 0218955c..3221da4a 100644 --- a/others/Dockerfile +++ b/oh-my-scheduler-server/Dockerfile @@ -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"] diff --git a/oh-my-scheduler-worker-agent/pom.xml b/oh-my-scheduler-worker-agent/pom.xml new file mode 100644 index 00000000..310dacd3 --- /dev/null +++ b/oh-my-scheduler-worker-agent/pom.xml @@ -0,0 +1,74 @@ + + + + oh-my-scheduler + com.github.kfcfans + 1.0.0 + + + 4.0.0 + oh-my-scheduler-worker-agent + 1.2.0 + jar + + + + 1.2.0 + 1.2.3 + 4.3.2 + + 2.2.6.RELEASE + + + + + + com.github.kfcfans + oh-my-scheduler-worker + ${oms.worker.version} + + + + + info.picocli + picocli + ${picocli.version} + + + + ch.qos.logback + logback-core + ${logback.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring.boot.version} + + com.github.kfcfans.oms.worker.MainApplication + + + + + repackage + + + + + + + + \ No newline at end of file diff --git a/oh-my-scheduler-worker-agent/src/main/java/com/github/kfcfans/oms/worker/MainApplication.java b/oh-my-scheduler-worker-agent/src/main/java/com/github/kfcfans/oms/worker/MainApplication.java new file mode 100644 index 00000000..f62665e1 --- /dev/null +++ b/oh-my-scheduler-worker-agent/src/main/java/com/github/kfcfans/oms/worker/MainApplication.java @@ -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); + } + } +} diff --git a/oh-my-scheduler-worker-agent/src/main/resources/logback.xml b/oh-my-scheduler-worker-agent/src/main/resources/logback.xml new file mode 100644 index 00000000..922b32af --- /dev/null +++ b/oh-my-scheduler-worker-agent/src/main/resources/logback.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + utf8 + + + debug + DENY + NEUTRAL + + + + + + ${LOG_PATH}/oms-server-error.log + + ${LOG_PATH}/oms-agent-error.%d{yyyy-MM-dd}.log + 7 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + UTF-8 + + + ERROR + ACCEPT + DENY + + + + + + + + ${LOG_PATH}/oms-server-application.log + + ${LOG_PATH}/oms-agent-application.%d{yyyy-MM-dd}.log + 7 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + UTF-8 + + true + + + + + + + + + + \ No newline at end of file diff --git a/others/script/build_docker.sh b/others/script/build_docker.sh deleted file mode 100644 index 752cf70d..00000000 --- a/others/script/build_docker.sh +++ /dev/null @@ -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 diff --git a/others/script/build_server_docker.sh b/others/script/build_server_docker.sh new file mode 100755 index 00000000..9a3cd0b9 --- /dev/null +++ b/others/script/build_server_docker.sh @@ -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 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 89d6bfb2..67a348ea 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,7 @@ oh-my-scheduler-common oh-my-scheduler-client oh-my-scheduler-worker-samples + oh-my-scheduler-worker-agent