2017-01-10 52 views
2

我有一個基於spring啓動的Java應用程序,它可以從命令行(嵌入式tomcat standalone)運行良好。春季啓動應用程序運行良好的獨立,在碼頭errs

問題

當我運行在泊塢窗的應用程序,它不能正常運行。控制檯顯示應用程序啓動正常,沒有錯誤;然而,瀏覽器會顯示以下錯誤頁:

白色標籤錯誤頁面

該應用對/錯誤沒有明確的映射,所以你看到 此作爲後備。

[我明白這個消息說沒有映射的'/錯誤'網址。但是我想知道的根本原因]

附加信息/語境

  • 春季啓動1.4.2
  • 泊塢窗插件
  • 輸出是「戰爭」文件,該文件還單獨運行
  • 我在'主機'網絡模式下運行docker鏡像(--net = host),所以它可以訪問數據庫(在本地主機上運行mysql)

的build.gradle目標

task buildDocker(type: Docker, dependsOn: build) { 
    push = false 
    applicationName = jar.baseName 
    dockerfile = file('src/main/docker/Dockerfile') 
    doFirst { 
    copy { 
     from war 
     into stageDir 
    } 
    } 
} 

dockerfile

FROM frolvlad/alpine-oraclejdk8:slim 
VOLUME /tmp 
ADD floss.war app.jar 
RUN sh -c 'touch /app.jar' 
ENV JAVA_OPTS="" 
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] 

命令來運行多克爾

dockerImg=1248c47d9cfa 
docker run \ 
     -it \ 
     --net=host \ 
     -e SPRING_APPLICATION_JSON="$SPRING_APPLICATION_JSON" \ 
     $dockerImg 

我是新來泊塢窗並希望任何建議。

在此先感謝!

+1

你能運行'''docker ps''',然後執行'''docker logs --tail 100 -f $ {YOUR_CONTAINER_ID}'''看看發生錯誤時stdout/stderr中是否有任何stacktrace? – EwyynTomato

回答

1

我懷疑這是由於缺少-p選項,你可以試試這個。如果不同,請更改端口。 搬運工運行-p 8080:8080 -IT \ --net =主機\ -e SPRING_APPLICATION_JSON = 「$ SPRING_APPLICATION_JSON」 \ $ dockerImg

3

問題:

  1. 在dockerfile
  2. 沒有暴露的端口
  3. 沒有與主機的端口映射。

溶膠: 1.暴露應用端口中dockerfile和構建圖像 EXPOSE $application_port 2。然後運行 docker run -p 8080:8080 -d -e SPRING_APPLICATION_JSON="$SPRING_APPLICATION_JSON" $dockerImg

1

我有同樣的問題。您似乎正在像Spring Boot一樣使用相同的Docker示例。正如你所看到的,當WAR文件被放入Docker鏡像時,它的擴展名是.jar,而不是.war。

我能夠通過調用文件「app.war」而不是「app.jar」並相應地更改Java啓動參數來解決該問題。

如果使用擴展名「.jar」,則對靜態資源的訪問可以正常工作,但訪問所有動態內容(JSP,...)會導致404錯誤。

相關問題