diff --git a/backend/build.gradle b/backend/build.gradle
index d9047cc..dd3c0ca 100644
--- a/backend/build.gradle
+++ b/backend/build.gradle
@@ -5,10 +5,20 @@
     id 'org.jetbrains.kotlin.plugin.spring'
     id 'org.jetbrains.kotlin.plugin.jpa' version '1.3.31'
     id 'io.spring.dependency-management'
+    id 'com.palantir.docker' version '0.22.1'
 }
 
+docker {
+    name 'harbor.supwisdom.com/dali/portal:' + version
+    println(jar.archivePath)
+    files jar.archivePath
+}
+
+docker.dependsOn(jar)
+
+archivesBaseName = 'portal'
 group 'com.supwisdom.dlpay'
-version '1.0-SNAPSHOT'
+version '1.0'
 
 sourceCompatibility = 1.8
 
diff --git a/backend/src/main/java/com/supwisdom/dlpay/framework/jpa/Finder.java b/backend/src/main/java/com/supwisdom/dlpay/framework/jpa/Finder.java
index a344ce8..c6dfcc5 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/framework/jpa/Finder.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/framework/jpa/Finder.java
@@ -278,10 +278,10 @@
 	public static final String ORDER_BY = "order by";
 	public static final String GROUP_BY = "group by";
 
-	public static void main(String[] args) {
-		Finder find = Finder
-				.create("select distinct p FROM BookType join fetch p");
-		System.out.println(find.getRowCountHql());
-		System.out.println(find.getOrigHql());
-	}
+//	public static void main(String[] args) {
+//		Finder find = Finder
+//				.create("select distinct p FROM BookType join fetch p");
+//		System.out.println(find.getRowCountHql());
+//		System.out.println(find.getOrigHql());
+//	}
 }
\ No newline at end of file
diff --git a/backend/src/main/java/com/supwisdom/dlpay/portal/util/SecurityConfig.java b/backend/src/main/java/com/supwisdom/dlpay/portal/util/SecurityConfig.java
new file mode 100644
index 0000000..3229dd0
--- /dev/null
+++ b/backend/src/main/java/com/supwisdom/dlpay/portal/util/SecurityConfig.java
@@ -0,0 +1,21 @@
+package com.supwisdom.dlpay.portal.util;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class SecurityConfig implements WebMvcConfigurer  {
+
+  @Bean
+  public WebMvcConfigurer forwordToIndex() {
+    return new WebMvcConfigurer() {
+      @Override
+      public void addViewControllers(ViewControllerRegistry registry) {
+        registry.addViewController("/pages").setViewName("forward:/pages/index.html");
+        registry.addViewController("/pages/").setViewName("forward:/pages/index.html");
+      }
+    };
+  }
+}
diff --git a/backend/src/main/java/com/supwisdom/dlpay/util/RSAKeysGenerate.java b/backend/src/main/java/com/supwisdom/dlpay/util/RSAKeysGenerate.java
index 82d2b82..f040c44 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/util/RSAKeysGenerate.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/util/RSAKeysGenerate.java
@@ -33,18 +33,18 @@
   private static final int MAX_DECRYPT_BLOCK = 128;
   /** 默认的安全服务提供者 */
   private static final Provider DEFAULT_PROVIDER = new BouncyCastleProvider();
-  public static void main(String[] args) {
-    Map<String, Object> keyMap;
-    try {
-      keyMap = initKey();
-      String publicKey = getPublicKey(keyMap);
-      System.out.println(publicKey);
-      String privateKey = getPrivateKey(keyMap);
-      System.out.println(privateKey);
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
+//  public static void main(String[] args) {
+//    Map<String, Object> keyMap;
+//    try {
+//      keyMap = initKey();
+//      String publicKey = getPublicKey(keyMap);
+//      System.out.println(publicKey);
+//      String privateKey = getPrivateKey(keyMap);
+//      System.out.println(privateKey);
+//    } catch (Exception e) {
+//      e.printStackTrace();
+//    }
+//  }
 
   public static String getPublicKey(Map<String, Object> keyMap) throws Exception {
     Key key = (Key) keyMap.get(PUBLIC_KEY);
diff --git a/backend/src/main/java/com/supwisdom/dlpay/util/TOTP.java b/backend/src/main/java/com/supwisdom/dlpay/util/TOTP.java
index bcab4d3..ea4bbcc 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/util/TOTP.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/util/TOTP.java
@@ -182,20 +182,20 @@
 		return result;
 	}
 
-	public static void main(String[] args) {
-		long X = 30;
-		long T0 = 0;
-		String steps = "0";
-		long time = System.currentTimeMillis() / 1000;
-		System.out.println(time);
-		long T = (time - T0) / X;
-		steps = Long.toHexString(T).toUpperCase();
-		while (steps.length() < 16) {
-			steps = "0" + steps;
-		}
-		String seed = "9e8bb3d2df73741c041aef39e37ee015fc98233720a1350fcd67d5c3027896ac";
-		String totp = TOTP.generateTOTP(seed, steps, "8", "HmacSHA256");
-		System.out.println(totp);
+//	public static void main(String[] args) {
+//		long X = 30;
+//		long T0 = 0;
+//		String steps = "0";
+//		long time = System.currentTimeMillis() / 1000;
+//		System.out.println(time);
+//		long T = (time - T0) / X;
+//		steps = Long.toHexString(T).toUpperCase();
+//		while (steps.length() < 16) {
+//			steps = "0" + steps;
+//		}
+//		String seed = "9e8bb3d2df73741c041aef39e37ee015fc98233720a1350fcd67d5c3027896ac";
+//		String totp = TOTP.generateTOTP(seed, steps, "8", "HmacSHA256");
+//		System.out.println(totp);
 
 		/*
 
@@ -260,5 +260,5 @@
 		}
 
 		*/
-	}
+//	}
 }
\ No newline at end of file
diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties
index ffe72fb..d757f8f 100644
--- a/backend/src/main/resources/application.properties
+++ b/backend/src/main/resources/application.properties
@@ -7,7 +7,6 @@
 spring.jpa.show-sql=true
 spring.datasource.hikari.connection-timeout=60000
 spring.datasource.hikari.maximum-pool-size=5
-spring.jpa.hibernate.ddl-auto=update
 # logging
 logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
 logging.level.org.hibernate.SQL=debug
@@ -15,10 +14,9 @@
 #spring.mvc.view.prefix=/pages/
 #spring.mvc.view.suffix=.jsp
 server.servlet.context-path=/portal
-server.port=8089
 #################### thymeleaf ####################
-spring.mvc.static-path-pattern=/static/**
-spring.thymeleaf.prefix=classpath:/templates/
+spring.mvc.static-path-pattern=/pages/**
+spring.resources.static-locations=file:/opt/portal/dist/
 spring.thymeleaf.suffix=.html
 spring.thymeleaf.encoding=UTF-8
 spring.thymeleaf.mode=HTML5
@@ -31,7 +29,6 @@
 server.tomcat.uri-encoding=UTF-8
 ##################################################
 ## quartz task scheduler
-shopbalance.updater.cron=*/10 * * * * ?
 dayend.settletask.cron=0 3/30 2-3 * * ?
 query.third.transdtl.result.cron=7 0/1 * * * ?
 payapi.sourcetype.checker.scheduler=7 3/10 * * * ?
@@ -41,5 +38,4 @@
 # user password
 auth.password.bcrypt.length=10
 ###################################################
-spring.redis.database=0
 multi-tenant.datasource.base-package=com.supwisdom.dlpay
\ No newline at end of file
