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