簡體   English   中英

構建 jar 文件但 (dockerize) Spring Boot 應用程序啟動

[英]Build jar file but (dockerize) Spring Boot Application starts

我想從我的 Spring Boot 應用程序構建一個 jar 文件,以構建一個 docker 鏡像。

我選擇“包”resp。 使用“包”作為命令行運行 maven。 相反,它運行整個 Spring Boot 應用程序。 最后它失敗了,因為它指的是 dockerize mysql db。 由於 db 和 Spring Boot 應用程序在不同的網絡中,它當然失敗了:

2020-03-11 01:37:11.655 ERROR 6128 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.

java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 5 times. Giving up.
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_171]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_171]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_171]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_171]

...
Caused by: java.net.UnknownHostException: shortenedurlmysqldb

我的application.properties文件:

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://shortenedurlmysqldb/bootdb2?createDatabaseIfNotExist=true&autoReconnect=true&maxReconnects=5&allowPublicKeyRetrieval=true&useSSL=false
spring.datasource.username=newuser
spring.datasource.password=password
spring.datasource.platform=mysql
spring.datasource.initialization-mode=always

我的Dockerfile

From openjdk:8
copy ./target/jugtours-0.0.1-SNAPSHOT.jar jugtours-0.0.1-SNAPSHOT.jar
CMD ["java","-jar","jugtours-0.0.1-SNAPSHOT.jar"]

我的application.yml

spring:
  profiles:
    active: spring.profiles.active@
  security:
    oauth2:
      client:
        registration:
          okta:
            client-id: [...secret...]
            client-secret: [...secret...]
            scope: openid, email, profile
        provider:
          okta:
            issuer-uri: [...secret...]

我不明白為什么必須首先啟動 Spring Boot 應用程序。 maven不啟動Spring Boot App就不能創建jar文件嗎?

我認為這是因為您有一些 TestCases,即使您沒有添加,默認的 Spring boot 也會有一個空的測試文件。

嘗試在mvn package觸發時跳過測試用例

mvn package -DskipTests

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM