Parcourir la source

doc: docker链接配置说明

370774330@qq.com il y a 5 ans
Parent
commit
1aa604cce9

+ 12 - 18
api/src/main/java/seecoder/devcloud/api/docker/impl/DockerApiImpl.java

@@ -12,15 +12,12 @@ import lombok.extern.apachecommons.CommonsLog;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.system.ApplicationHome;
 import org.springframework.stereotype.Component;
-import org.springframework.util.ResourceUtils;
 import seecoder.devcloud.api.ApplicationProperties;
 import seecoder.devcloud.api.docker.DockerApi;
 
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.URI;
-import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
@@ -37,24 +34,21 @@ public class DockerApiImpl implements DockerApi {
     @Autowired
     public DockerApiImpl(ApplicationProperties properties) throws DockerCertificateException {
         registry = properties.getDocker().getRegistry();
-        Path dockerConfigPath = null;
-        try {
-            dockerConfigPath = ResourceUtils.getFile("classpath:docker").toPath();
-            if (properties.getDocker().getTls()){
-                client = new DefaultDockerClient(URI.create(properties.getDocker().getHost()), new DockerCertificates(dockerConfigPath));
-                log.info("Docker 启用tls验证");
-            } else {
-                client = new DefaultDockerClient(properties.getDocker().getHost());
-                log.info("Docker 未启用tls验证");
-            }
-        } catch (FileNotFoundException e) {
-            throw new DockerCertificateException("设置读取失败");
+        ApplicationHome applicationHome = new ApplicationHome(getClass());
+        //将配置文件放在resource的写法会导致打包成jar后无法正常读取配置文件
+        // 这里只是为了方便本地测试所以这样写,
+        // 如有需要请把配置文件放在打包之外的固定位置使用路径读取(部署的时候也要这样)
+        if (properties.getDocker().getTls()){
+            client = new DefaultDockerClient(URI.create(properties.getDocker().getHost()), new DockerCertificates(Paths.get(applicationHome.getDir().getAbsolutePath(), "docker")));
+            log.info("Docker 启用tls验证");
+        } else {
+            client = new DefaultDockerClient(properties.getDocker().getHost());
+            log.info("Docker 未启用tls验证");
         }
 
         defaultHandler = new NoActionProgressHandler();
-        ApplicationHome applicationHome = new ApplicationHome(getClass());
-        // Path path = Paths.get(applicationHome.getDir().getAbsolutePath(), "docker-config.json");
-        registryAuthSupplier = new ConfigFileRegistryAuthSupplier(new DockerConfigReader(), Paths.get(dockerConfigPath.toString(),"docker-config.json"));
+        //这里同上,配置文件放在resource的写法会导致打包成jar后无法正常读取配置文件
+        registryAuthSupplier = new ConfigFileRegistryAuthSupplier(new DockerConfigReader(),Paths.get(applicationHome.getDir().getAbsolutePath(), "docker","docker-config.json"));
     }
 
     @Override

+ 12 - 17
core/src/main/java/seecoder/devcloud/core/pipeline/template/PipelineTemplateTable.java

@@ -1,11 +1,10 @@
 package seecoder.devcloud.core.pipeline.template;
 
-import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.http.HttpStatus;
-import org.springframework.util.ResourceUtils;
+import org.springframework.core.io.ClassPathResource;
 import seecoder.devcloud.core.pipeline.PipelineException;
 
-import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -13,6 +12,8 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+
 /**
  * @author PuHong Weng
  * @date 2021/3/16
@@ -60,8 +61,8 @@ public class PipelineTemplateTable {
      */
     public static void copyTemplateDockerfile(String templateName, Path dockerfile) throws IOException {
         Files.createFile(dockerfile);
-        File template = ResourceUtils.getFile("classpath:template/dockerfile/" + templateName);
-        FileUtils.copyFile(template, dockerfile.toFile());
+        ClassPathResource classPathResource = new ClassPathResource("template/dockerfile/"+templateName);
+        Files.write(dockerfile,IOUtils.toString(classPathResource.getInputStream(), UTF_8).getBytes());
     }
 
     /**
@@ -71,27 +72,21 @@ public class PipelineTemplateTable {
      * @return
      */
     public static void copyTemplateMavenSetting(Path mavenSetting) throws IOException {
-        File template = ResourceUtils.getFile("classpath:template/settings.xml");
-        FileUtils.copyFile(template, mavenSetting.toFile());
+        Files.createFile(mavenSetting);
+        ClassPathResource classPathResource = new ClassPathResource("template/settings.xml");
+        Files.write(mavenSetting,IOUtils.toString(classPathResource.getInputStream(), UTF_8).getBytes());
     }
 
     /**
      * 获取模板的json配置文件
      */
     public static String getTemplateConfigJson(String templateName) throws PipelineException {
-        File file = null;
-        String template = null;
+
         try {
-            file = ResourceUtils.getFile("classpath:template/config/" + templateName + ".json");
-            List<String> lines = Files.readAllLines(file.toPath());
-            StringBuffer sb = new StringBuffer();
-            for (String line : lines) {
-                sb.append(line);
-            }
-            template = sb.toString();
+            ClassPathResource classPathResource = new ClassPathResource("template/config/"+ templateName + ".json");
+            return IOUtils.toString(classPathResource.getInputStream(), UTF_8);
         } catch (IOException e) {
             throw new PipelineException(HttpStatus.SC_SERVICE_UNAVAILABLE, PipelineException.CONFIG_JSON_ERROR, e);
         }
-        return template;
     }
 }

+ 18 - 0
web/docker/ca.pem

@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIIC8TCCAdmgAwIBAgIRAKQJIyz98Irf8Ay5x5snj4owDQYJKoZIhvcNAQELBQAw
+EjEQMA4GA1UEChMHZGVwb25pYTAeFw0yMDEyMDIxNTIyMDBaFw0yMzExMTcxNTIy
+MDBaMBIxEDAOBgNVBAoTB2RlcG9uaWEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQDMC7rbvdWIMe2bNzWKVeBTlVHdBjc/XAi2LzUeRAY/G9ibB59uqjLG
+L62kjqMIP7p2WAQA2yD23hBXeHi+CIh0qItTZXa6KuguGUsOJCtISReDPVd3c0Ub
+6fLCHYk/PpGUeN94M29CdhB/O2oyslapeUQQnNxukFqYne6oWVOHtCZQbM7NvRaa
+IGguMJZnoCIsaVSyNAvQ2ftS+GK4vWdQ1Q+5UgGAW42gCwT/ilcXHXcImzoovVsf
+uTsprMyY5iloZiicf5hpjHx7XNeYwOvPGFwf00VgIlxtjD0CCl8JyXyYs0opx5xT
+YpMQuHp6z3CFWPWIKThMgrtBBG0+rxIDAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIC
+rDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQf1wYXm/AUnqG9rwDBZMdNETkP
+AzANBgkqhkiG9w0BAQsFAAOCAQEAF3XObE3Lmi5rh+gYA35yuAjRvEbmS42Rkn0L
+ntzYzet18OG/2ZUjhLwElZlQln/3yHhsNsdETUuRbVjoCoFQoMjcoN7JOQHn2/GF
+QuLnXaGwHLBwXDl/ogSPJfShzw/vUV2+EXMi+3TV7dVJ43h26Eczqvkem/mlqkpc
+LMsd+7iAIFII66MBktW+SajvFS2v7YxABPJjH92O2t9JklkmgFoAYeE/FyXbolPy
+IzX0ps6+kqcgxZ2fu5w2XFWSNfZfT836mIDfFro2qDsdMV61cCHlHdyvfHJENxla
+x+yjvPZVoANAzWZzYInO/aCHYoZTjArg+Pcl+8cmEpzg086yxA==
+-----END CERTIFICATE-----

+ 19 - 0
web/docker/cert.pem

@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDETCCAfmgAwIBAgIRALOlivIw9909Q3Bp/0zOI7gwDQYJKoZIhvcNAQELBQAw
+EjEQMA4GA1UEChMHZGVwb25pYTAeFw0yMDEyMDIxNTIyMDBaFw0yMzExMTcxNTIy
+MDBaMB4xHDAaBgNVBAoME2RlcG9uaWEuPGJvb3RzdHJhcD4wggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQDwnxAQQnbpT+ukGvk33H2JJbXHsDzOS/5ej+81
+f1zXJCUJN45GuiPNJs2r6m4HGKRPO2r+2tJhBwbw0XoePOjobMMA8sQEvpTkllVg
+IZr7tnFcb1tB83irvueW8SLw8z/PW2xWqw5oq0F2QZjzYdvFU/iFw64Ezw2yfKZU
+ut4p6xCnsZKkvqU+MoOrGLfFZrybHC1Yq8IZs12g4ifhsUURPOYEe7sBlempfWZt
+QpZ348sUqpo/M5hU3O+whWjcLtYb5xckKRgwo6C5TvkrZD13fAx8C+2pFY9ueIeV
+hVSMl+IWkfjbenJ8OE+GRdERTSRzXuYSrPOF63fvaToaJg7pAgMBAAGjVjBUMA4G
+A1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAA
+MB8GA1UdIwQYMBaAFB/XBheb8BSeob2vAMFkx00ROQ8DMA0GCSqGSIb3DQEBCwUA
+A4IBAQAHglVS6GYNKB6M1EznEUAKS+qXjIwgRbFL1gToCgMoaf5SnQCmNWIIFF15
+43n8drp/95x51CizorYJ+gJcXEtiW8dljWrOgm9ARvaCpQAIMwbqG6y4CjYqXLAW
+txXyX0TrZ7GHJp6RTtrmVofdTb9bCQRQmw241oBd3gb5t+2VfOZE2iJ1RTXWBZ3z
+TikVmnLmJNJgzmh8v1WOFJRd/VJJ6K8U/87m/LndOemCQtdxaEnwnkKy2lGk+sUV
+KAXAd3THnalo0ibVWIWDUxnTaMFWNpJwjgwwPDhFb4Px94Rry3lAlrQ4q9AfAmS9
+d1ZnhoqV+Pms6SUzEJ6NQ6jz4mxG
+-----END CERTIFICATE-----

+ 8 - 0
web/docker/docker-config.json

@@ -0,0 +1,8 @@
+{
+  "auths": {
+    "nexus.seecoder.cn:8092": {
+      "username": "admin",
+      "password": "NJU76nexus"
+    }
+  }
+}

+ 27 - 0
web/docker/key.pem

@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEA8J8QEEJ26U/rpBr5N9x9iSW1x7A8zkv+Xo/vNX9c1yQlCTeO
+RrojzSbNq+puBxikTztq/trSYQcG8NF6Hjzo6GzDAPLEBL6U5JZVYCGa+7ZxXG9b
+QfN4q77nlvEi8PM/z1tsVqsOaKtBdkGY82HbxVP4hcOuBM8NsnymVLreKesQp7GS
+pL6lPjKDqxi3xWa8mxwtWKvCGbNdoOIn4bFFETzmBHu7AZXpqX1mbUKWd+PLFKqa
+PzOYVNzvsIVo3C7WG+cXJCkYMKOguU75K2Q9d3wMfAvtqRWPbniHlYVUjJfiFpH4
+23pyfDhPhkXREU0kc17mEqzzhet372k6GiYO6QIDAQABAoIBAEo/2xYZXFYsajtO
+c37QVBCBCXHgKTNDce++HIN2lLByn9cTRJ0AjVGd2rNk+KTJ7tHgNOkFnwt/vp2L
+FlLEWt51yUq+nswT/x/2X8v1MrzflGWAmzljpuXgV9hU+oI9nYAf5vNrf1u/FMkn
+/smDdeyTN8oXEti7B6//FNhqfWmTXXhpygQrXeB2SGmH+kPgg851Kxi5lcz9DDBU
+GCgvvt0GL0i+q6rQ0e9Rwc87LxviG5lsgl+yA7TpzDkzpXQGKMtfzQpPUWsYRkoU
+qaebBUdWVX4Ldmwx6VmMACPvFnCg4lzFrc7ve8dZ/bmnHxMLkvSyP5DQ6hUFjTh6
+OxzzL60CgYEA9toSOTwngUIJADyG1CXQWoeCiSRx3XsU2PIxTkxo7DSUSwJMqwRv
+NEZhhOmDLNte2eDp6Wblk/xoBD0yQyXsjNaCs9GLZlzUcadg4zn2E/hqDyhX59dw
+oUVaKnkC7UZrhmJHbzbJtuvkerq22C4vJcd0zf9UqHdAaLNWMTROsCcCgYEA+Ynh
+s5c7wXab9rSurY8r85PpHo2dRWOn/CBm1xK4bY/lDDE2SRL7R3fzBDmxiL0ZtzFL
+pkwqlGq3kR3uCGKz5td6/c9aD9OpSoKLNfQ065PPdO+Ixi/sVP7O67OXBRu5Wkc1
+lHV4Gb9r21TldgFTXVGAl4LtNpa3sKJ6kGVZom8CgYEAjjVFCFoCPDHJs6wq1G7Q
+YEbuyYkIW9q7QNwN0ZitXV5RDAFQH7mXQttE9Of9nMroEsbCmqafnahsV/zVRt/D
+LcOqWmNeVmMmNC+D3oOWoxyaJQ9NzQ9NIGsurYc3S3AlI67cjlJW1J2C671C9rls
+iewk+0OcBs1keqzN+9yxdEMCgYBhBIKD2GCbLwokOMtRH0DvSqpv/o8O01gUZmSV
+aenabv+WZeu9LWwUtUX+do/Xoe3Fk5zd4u8LFRKZkRFioT1gmpZu55cUYC6JkYee
+Snvou2cFB7wdkbRIt2irqv8kNUszFkx2k9VF7W55r+AmqQ1IUs+0GGsxthdkzUbp
+rP3UcQKBgA4PC3h4OxpDnC3Usj5rZe0inkBq9W8yUlOJFKa+r0e6OQWaH7dLH3OG
+097YDXLZ0sRG4BOEnpqvlhIoNRvtmcYAOjoxaTOzqKnPZ9Xo7ppdz855VbVpAlkS
+oYPF9mWfnSt4E25z14Q/Is1Fan6FevlrKi2I2Y3ipB158SRstgyl
+-----END RSA PRIVATE KEY-----

+ 1 - 0
web/docker/readme.md

@@ -0,0 +1 @@
+这个是本地测试连接时用的证书,实际生成环境直接通过 unix:///