2016-07-19 8 views
0

私はSpringブートベースのアプリケーションを実行するためにDockerイメージを構築しています。 application.propertiesを含むフォルダをコンテナにマウントして、実行時のプロパティファイルを提供できるようにする必要があります。ここで/home/user/config私はjarファイルは、実行時にピックアップするapplication.propertiesが含まれている私のDockerfile、エントリーポイント実行の前または後にドッカーマウントが発生する

FROM java:8 

RUN mkdir /app 
RUN mkdir /app/config 
ADD myapp.jar /app/ 

ENTRYPOINT ["java","-jar","/app/myapp.jar"] 

コンテナをキックオフすると、私はこれを実行し、

docker run -d -v /home/user/config:/app/config myapp:latest 

です。

しかし、これは動作しません、アプリケーションの実行はこのマウントされたプロパティファイルをピックアップしません、それは、jarファイル内にパックされているデフォルトのファイルを使用しています。しかし、私がexecを起動したコンテナに入れ、手動でエントリポイントcmdを再度実行すると、マウントされたファイルをピックアップすることで期待どおりに動作します。または、私はちょうどこの場合のDockerfileを正しく書いていませんでしたか? (他の場所の間で)現在のディレクトリ/configサブディレクトリ内部application.propertiesため

+0

手動で実行すると、どのディレクトリから実行しますか? '/'または '/ app'ですか? – Roman

+0

申し訳ありませんが早すぎます。私は 'exec'の後にどこでコンテナの権利に走るのですか?私は '/ app'の下で実行するので、手動で実行されたcmdは' java -jar myapp.jar'でした。 – Derek

+0

ああ、ちょうどすぐにcmdをどこか別の場所で実行しようとしました。だから私は、Spring Bootが外部設定を取り上げる方法を完全に理解していないという問題があると思います。 – Derek

答えて

1

スプリングブートsearches。あなたの場合、現在のディレクトリは/(ドッカーのデフォルト)ですので、/appに変更する必要があります。これを行うには、ENTRYPOINT行の前に

WORKDIR /app 

を追加します。


そして、あなたの元の質問に答えるために:マウントは、コンテナ内の何も前に行われますが実行されます。

+0

うん、ちょうどこれをして、それは動作します。ドキュメントページを少し慎重に読んでください。クイックヘルプに感謝します! – Derek

関連する問題