zhangyuting 5 лет назад
Родитель
Сommit
cd739c09f3

+ 1 - 1
docker-compose.yml

@@ -8,7 +8,7 @@ services:
     image: image-pool-service:latest
     container_name: image-pool-app
     ports:
-      - "8080:8080"
+      - "8081:8081"
     restart: always
     networks:
       - backend

+ 12 - 9
src/main/docker/Dockerfile

@@ -1,22 +1,25 @@
-FROM openjdk:8-jdk-alpine AS builder
+FROM openjdk:8u282-jdk-slim  AS builder
+
+ENV TZ=Asia/Shanghai
 
 WORKDIR /app
 
 COPY . .
 
-RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories && \
-    apk update && \
-    apk add --no-cache tzdata dos2unix && \
+RUN set -eux; \
+    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime; \
+    echo $TZ > /etc/timezone && \
     # 编译
     chmod +x ./mvnw && \
-    ./mvnw package && \
+    ./mvnw clean package && \
     ls -la
 
-FROM openjdk:8-jre-alpine as runner
+FROM openjdk:8u282-jre-slim  as runner
+ENV TZ=Asia/Shanghai
 
 WORKDIR /app
 
-RUN addgroup -S spring && adduser -S spring -G spring && ls -la && pwd
+RUN adduser spring && adduser spring  spring && ls -la && pwd
 
 USER spring:spring
 
@@ -25,6 +28,6 @@ COPY --from=builder /app/target/*.jar /app/app.jar
 
 RUN ls -la && pwd
 
-EXPOSE 8080
+EXPOSE 8081
 
-CMD ["java","-Xms1024m","-Xmx1024m","-jar","/app/app.jar"]
+CMD ["java","-Xms1024m","-Xmx1024m","-jar","/app/app.jar","--server.port=8081"]

+ 2 - 0
src/main/java/com/mokasz/image_pool/algorithm/OpenCvService.java

@@ -6,7 +6,9 @@ import org.opencv.core.Mat;
 import org.opencv.core.MatOfByte;
 import org.opencv.img_hash.PHash;
 import org.opencv.imgcodecs.Imgcodecs;
+import org.springframework.stereotype.Service;
 
+@Service
 public class OpenCvService {
     // 静态初始化 OpenCV
     static {

+ 11 - 10
src/main/java/com/mokasz/image_pool/restful/controller/ImageController.java

@@ -4,9 +4,8 @@ import com.mokasz.image_pool.algorithm.OpenCvService;
 import com.mokasz.image_pool.restful.entity.ImageQueryResponse;
 import com.mokasz.image_pool.restful.entity.ImageSaveResponse;
 import com.mokasz.image_pool.restful.service.DownloadBytes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -15,13 +14,15 @@ import java.io.IOException;
 import java.sql.ResultSet;
 import java.util.List;
 
+@Slf4j
 @RestController
 @RequestMapping("/service/image")
+@RequiredArgsConstructor
 public class ImageController {
 
-  private final Logger logger = LoggerFactory.getLogger(this.getClass());
-  private final OpenCvService service = new OpenCvService();
-  @Autowired private JdbcTemplate jdbcTemplate;
+  private final OpenCvService service;
+
+  private final JdbcTemplate jdbcTemplate;
 
   @GetMapping("/")
   public ImageSaveResponse index() throws IOException {
@@ -32,7 +33,7 @@ public class ImageController {
     if (url != null) {
       return DownloadBytes.downloadAsBytesArray(url);
     } else if (file != null) {
-      logger.info("File size: {} Name: {}", file.getSize(), file.getOriginalFilename());
+      log.info("File size: {} Name: {}", file.getSize(), file.getOriginalFilename());
       return file.getBytes();
     } else {
       throw new RuntimeException("缺少file或url");
@@ -48,14 +49,14 @@ public class ImageController {
     service.calculatePHash(this.getFileBytes(file, url), floats);
     float[] binaries = new float[64];
     service.transformBinaryArray(floats, binaries);
-    logger.info("{}", binaries);
+    log.info("{}", binaries);
     String hash = service.getReadableHash(floats);
     int updated =
         jdbcTemplate.update(
             "INSERT INTO image_pool.image_hash VALUES (?, NOW(), ?) ON CONFLICT (hash) DO NOTHING",
             hash,
             binaries);
-    logger.info("{}", updated);
+    log.info("{}", updated);
     jdbcTemplate.update(
         "INSERT INTO image_pool.image_to_pool VALUES (?, ?, NOW()) ON CONFLICT (hash, pool_id) DO NOTHING",
         hash,
@@ -76,7 +77,7 @@ public class ImageController {
     service.calculatePHash(this.getFileBytes(file, url), floats);
     float[] binaries = new float[64];
     service.transformBinaryArray(floats, binaries);
-    logger.info("{}", floats);
+    log.info("{}", floats);
     List<ImageQueryResponse> list =
         jdbcTemplate.query(
             "SELECT * FROM (SELECT hash, (64 - l2_distance(?::FLOAT2[], vector)) / 64 AS similarity FROM image_pool.image_hash WHERE hash IN (SELECT hash FROM image_pool.image_to_pool WHERE pool_id = ?) ORDER BY vector <-> ?::FLOAT2[] ASC) t WHERE similarity >=? and similarity<=? ORDER BY similarity DESC LIMIT ?",

+ 3 - 1
src/main/resources/application.properties

@@ -1,4 +1,6 @@
-
+# app
+debug=false
+# db
 spring.datasource.driverClassName = org.postgresql.Driver
 spring.datasource.url = jdbc:postgresql://gp-uf61gv6sn7u6ij7kbo-master.gpdbmaster.rds.aliyuncs.com:5432/wudi_test?useUnicode=true&useSSL=false
 spring.datasource.username = wudi