2016-08-25 8 views
2

初めてDockerを試していて、Dockerコンテナの中で実行するSpring Boot Webアプリケーションを取得しようとしています。私はアプリケーションをビルドしています(自己完結型のjarファイルにパッケージ化されています)。そしてこれをDockerイメージに追加しています。DockerがOpenJDKを見つけられない

ここではOpenJDK Docker base imageの指示に従っています。 Bootup repo on GitHubに私のSSCCEがあります。READMEには、私が見ているものを再現するためのすべての指示があります。しかし、基本的には:

  • 私は瓶の中にエラーを私に以下のエラーを与え、その後、

を終了

  • 実行docker run -it --rm --name bootup bootup成功
  • 実行docker build -t bootup . Webアプリケーションを構築する:

    /bin/sh: 1: /bin/sh: [java,: not found 
    

    Google Godsによれば、このをOracle JDKイメージの問題に使用しましたが、ではなく、OpenBDKイメージではとなります。

    (そのGitHubのレポでアップもある)私のDockerfileを見て、私は誰のスポットをゆがんつもりできる場所:

    FROM openjdk:8 
    RUN mkdir /opt/bootup 
    ADD build/libs/bootup.jar /opt/bootup 
    WORKDIR /opt/bootup 
    ENTRYPOINT ['java', '-jar', 'bootup.jar'] 
    CMD [''] 
    

    感謝を事前に!


    更新docker ps

    出力:

    CONTAINER ID  IMAGE    COMMAND     CREATED 
    16bde964ff6b  bootup    "/bin/sh -c 'java -ja" 2 days ago 
    
    STATUS    PORTS     NAMES 
    Up 14 seconds  0.0.0.0:8080->8080/tcp bootup 
    
  • 答えて

    3

    私はそれがこのdockerfileを使用して正常に動作していた:

    FROM openjdk:8 
    
    RUN mkdir /opt/bootup 
    
    ADD build/libs/bootup.jar /opt/bootup 
    WORKDIR /opt/bootup 
    EXPOSE 8080 
    ENTRYPOINT java -jar bootup.jar 
    

    それはこのcommadでうまく動作します:

    docker run -it -p 8080:8080 --name bootup bootup 
    

    私はJava開発者ではありません。あなたのアプリケーションはポート80200で起動するため、ポート80200で起動する必要がある設定を無視する理由はわかりませんが、ドッカーの視点からすべてが機能しています私の設定と私はローカルホスト上で自分のブラウザからアプリに接続することができます。ここでは8080

    スクリーンショット: Screenshot

    また、あなたはgithubのレポを掲載するので、私は、ユーザーが開始できるように、Readmeファイルを変更することをお勧めこの1回のコマンドを実行しているホストマシンにJava環境を必要とせずにドッカーからのグラウンド:

    docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp openjdk:8 /usr/src/myapp/gradlew clean build 
    
    +0

    ありがとう@DpperfileH(+1) - あなたのDockerファイルの変更により、私はその方法の約90%を得ました!さて、 'docker run -it --rm --name bootup bootup'を実行すると、Dockerコンテナ*が起動して実行されます(' docker ps'を実行して見ることができます)。** 3(3 )**望ましくないことが起こっている。(1) 'docker run -it --rm --name bootup bootup'を実行しているターミナルウィンドウはすべてのSTDOUTロギングを出力していますが、私のアプリケーションは'/var/log/bootup /ブートアップ* .log'。 ** STDOUTがホストの端末に移動しないようにしたいのですが... ** – smeeb

    +0

    (2)同じ行にある 'docker run -it --rm --name bootup bootup'コマンドは決して戻りませんコマンドライン/ターミナル/プロンプトへの制御。アプリケーションがDockerではなくホストマシン上で実行されているかのようになります。 **実行するコマンドラインを返す方法** – smeeb

    +0

    (3)**最も重要なのは**、私は '' docker run ''を実行するときに何らかのポート転送(または何か)をする必要があると思う。 '--rm --name bootup bootup'を実行し、ブラウザに' http:// localhost:9200'を指定してください。何も表示されません。 **修正案は何ですか?**ありがとうございました! – smeeb

    関連する問題