2017-01-10 7 views
2

私はコマンドライン(Tomcatスタンドアロンの埋め込み)からうまく動作するスプリングブートベースのJavaアプリケーションを持っています。春の起動アプリケーションは、スタンドアロンでうまく動作します。ドッカーでエラーが発生しました

問題

私はドッキングウィンドウでアプリケーションを実行すると、それが正しく実行されません。コンソールはアプリケーションがエラーなく正常に起動することを示します。あなたがフォールバックとしてこれを を見ているので、

ホワイトレーベルのエラーページ

このアプリケーションは/エラーのために明示的なマッピングを持っていません。しかし、ブラウザは、次のエラーページが表示されます。

[私は '/ error' URLのマッピングがメッセージにないことを理解しています。しかし、私は春のブート1.4.2

  • ドッキングウィンドウプラグイン
  • 出力は、スタンドアロン
  • を走る「戦争」ファイルである

    追加情報/コンテキスト

    • ]根本的な原因を知りたいです
    • 「ホスト」ネットワーキングモード( - net = host)でドッキング画像を実行してデータベースにアクセスできるようにしました(ローカルホスト上で実行されているmysql)

    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" ] 
    

    dockerfile 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 
        } 
        } 
    } 
    

    コマンドを実行するドッカー

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

    私はドッカーする新たなんだと任意の提案をいただければ幸いです。

    ありがとうございます!

    +1

    エラーが発生したときにstdout/stderrにスタックトレースが表示されているかどうかを確認するために '' docker ps'''を実行してから '' 'docker logs -tail 100 -f $ {YOUR_CONTAINER_ID}' ''を実行できますか? – EwyynTomato

    答えて

    1

    これは、-pオプションが指定されていないと思われます。これを試すことができますか?ポートが異なる場合は変更してください。 ドッキングウィンドウの実行-p 8080:8080 -it \ --net =ホスト\ -e SPRING_APPLICATION_JSON = "$ SPRING_APPLICATION_JSON" \ $ dockerImg

    3

    問題:dockerfileで

    1. ませさらさポート
    2. ホストとのポートマッピングがありません。

    ソル: 1. dockerfileにアプリケーションポートを公開し、画像 EXPOSE $application_port 2を構築します。実行してください docker run -p 8080:8080 -d -e SPRING_APPLICATION_JSON="$SPRING_APPLICATION_JSON" $dockerImg

    1

    私は同じ問題がありました。私と同じようにDockerの例をSpring Bootに使用しているようです。ご覧のように、WARファイルは.warではなく、Dockerイメージに配置されたときに.jar拡張子を取得します。

    「app.jar」ではなく「app.war」というファイルを呼び出し、それに応じてJava起動パラメータを変更することで、この問題を解決できました。

    拡張子 ".jar"を使用すると、静的リソースへのアクセスは正常に機能しますが、すべての動的コンテンツ(JSPなど)にアクセスすると404エラーになります。

    関連する問題