소스 검색

调整 docker 的数据结构

reghao 5 년 전
부모
커밋
922e4f26f5

+ 2 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/deploy/AppDeployArgs.java

@@ -1,5 +1,6 @@
 package cn.reghao.autodop.common.dagent.app.api.data.deploy;
 
+import cn.reghao.autodop.common.dockerc.pojo.Config;
 import lombok.Data;
 
 /**
@@ -15,5 +16,5 @@ public class AppDeployArgs {
     private String packagePath;
     private String startHome;
     private String startScript;
-    private String dockerConfig;
+    private Config dockerConfig;
 }

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dockerc/Docker.java

@@ -176,7 +176,7 @@ public class Docker implements ImageOps, ContainerOps, AutoCloseable {
         String uri = DockerApi.createPost + "?name=" + name;
 
         RestartPolicy restartPolicy = new RestartPolicy("on-failure", 5);
-        HostConfig hostConfig = new HostConfig("host", restartPolicy);
+        HostConfig hostConfig = new HostConfig(restartPolicy, "host");
 
         Config config = new Config(image, hostConfig);
         String tmp = JsonConverter.objectToJson(config);

+ 22 - 16
common/src/main/java/cn/reghao/autodop/common/dockerc/pojo/Config.java

@@ -1,24 +1,42 @@
 package cn.reghao.autodop.common.dockerc.pojo;
 
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
-import lombok.AllArgsConstructor;
 import lombok.Data;
 
 import java.util.ArrayList;
 import java.util.List;
 
 /**
+ * docker 容器创建时的配置
+ *
  * @author reghao
  * @date 2020-01-14 23:11:21
  */
-@AllArgsConstructor
 @Data
 public class Config {
+    private String hostname;
+    private String domainname;
+    private String user;
+    private boolean attachStdin;
+    private boolean attachStdout;
+    private boolean attachStderr;
+    private boolean tty;
+    private boolean openStdin;
+    private boolean stdinOnce;
     private List<String> env;
+    private List<String> cmd;
+    private String entrypoint;
     private String image;
+    private Labels labels;
+    private Volumes volumes;
+    private String workingDir;
+    private boolean networkDisabled;
+    private String macAddress;
+    private ExposedPorts exposedPorts;
+    private String stopSignal;
+    private int stopTimeout;
     private HostConfig hostConfig;
-    // TODO 挂载 host 上的目录
-    //private Map<String, String> volumes;
+    private NetworkingConfig networkingConfig;
 
     public Config(List<String> env, HostConfig hostConfig) {
         this.env = env;
@@ -29,16 +47,4 @@ public class Config {
         this.image = image;
         this.hostConfig = hostConfig;
     }
-
-    public static void main(String[] args) {
-        RestartPolicy restartPolicy = new RestartPolicy("on-failure", 5);
-        HostConfig hostConfig = new HostConfig("host", restartPolicy);
-        List<String> env = new ArrayList<>();
-        env.add("ASPNETCORE_ENVIRONMENT=Production");
-        env.add("ASPNETCORE_URLS=http://172.16.45.67:8002;https://172.16.45.67:8102");
-
-        Config config = new Config(env, hostConfig);
-        String tmp = JsonConverter.objectToJson(config);
-        System.out.println();
-    }
 }

+ 11 - 0
common/src/main/java/cn/reghao/autodop/common/dockerc/pojo/ExposedPorts.java

@@ -0,0 +1,11 @@
+package cn.reghao.autodop.common.dockerc.pojo;
+
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2021-02-10 01:30:17
+ */
+@Data
+public class ExposedPorts {
+}

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dockerc/pojo/HostConfig.java

@@ -10,6 +10,6 @@ import lombok.Data;
 @AllArgsConstructor
 @Data
 public class HostConfig {
-    private String networkMode;
     private RestartPolicy restartPolicy;
+    private String networkMode;
 }

+ 11 - 0
common/src/main/java/cn/reghao/autodop/common/dockerc/pojo/Labels.java

@@ -0,0 +1,11 @@
+package cn.reghao.autodop.common.dockerc.pojo;
+
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2021-02-10 01:28:38
+ */
+@Data
+public class Labels {
+}

+ 11 - 0
common/src/main/java/cn/reghao/autodop/common/dockerc/pojo/NetworkingConfig.java

@@ -0,0 +1,11 @@
+package cn.reghao.autodop.common.dockerc.pojo;
+
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2021-02-10 01:33:05
+ */
+@Data
+public class NetworkingConfig {
+}

+ 11 - 0
common/src/main/java/cn/reghao/autodop/common/dockerc/pojo/Volumes.java

@@ -0,0 +1,11 @@
+package cn.reghao.autodop.common.dockerc.pojo;
+
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2021-02-10 01:29:10
+ */
+@Data
+public class Volumes {
+}

+ 4 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/DeployConfig.java

@@ -2,7 +2,9 @@ package cn.reghao.autodop.dmaster.app.entity.deploy;
 
 import lombok.Data;
 
+import javax.persistence.Column;
 import javax.persistence.Embeddable;
+import javax.persistence.Lob;
 
 /**
  * 应用部署配置
@@ -20,5 +22,7 @@ public class DeployConfig {
     // docker 启动参数
     // cn.reghao.autodop.common.dockerc.pojo.Config 序列化为 JSON 后的字符串
     //private Config dockerConfig;
+    @Lob
+    @Column(columnDefinition="text")
     private String dockerConfig;
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployer.java

@@ -59,7 +59,7 @@ public class AppDeployer {
             appDeployArgs.setStartHome(deployConfig.getStartHome());
             appDeployArgs.setStartScript(deployConfig.getStartScript());
             String config = deployConfig.getDockerConfig();
-            appDeployArgs.setDockerConfig(config);
+            appDeployArgs.setDockerConfig((Config) JsonConverter.jsonToObject(config, Config.class));
 
             String machineId = deployConfig.getMachineId();
             futureMap.put(machineId, threadPool.submit(new DeployTask(machineId, appDeployArgs)));

+ 12 - 0
scripts/test1.json

@@ -0,0 +1,12 @@
+{
+  "env":[
+    "appName=dnkt"
+  ],
+  "hostConfig":{
+    "networkMode":"host",
+    "restartPolicy":{
+      "name":"on-failure",
+      "maximumRetryCount":5
+    }
+  }
+}