2017-04-05 21 views
2

Dockerコンテナで実行しているときに、Springブートでアプリケーションのプロパティが読み取られません。DockerでSpringブートでapplication.propertiesを読み取ることができません

マイapplication.yml

server: 
    port: 8080 
    context-path: /mail 
custom: 
    greeting: Hello YML 

Dockerfile

FROM java:8-jre 
VOLUME /tmp 
COPY ./mail.jar /app/mail.jar 
RUN sh -c 'touch /app/mail.jar' 
ENV JAVA_OPTS="" 
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app/mail.jar" ] 
EXPOSE 8080 

とシンプルなApplicationControllerに

@RestController 
public class ApplicationController { 

    private final Environment environment; 

    @Autowired 
    public ApplicationController(Environment environment) { 
    this.environment = environment; 
    } 

    @RequestMapping(path = "/") 
    public Hello hello() { 
    final Hello hello = new Hello(); 
    hello.setGreeting(environment.getProperty("custom.greeting")); 
    return hello; 
    } 
} 
(ホスト)と HTTP上のアプリを利用できるようになり:// localhostを:18080

ドッカー

  1. サーバー私は自動的にポートに8080(ドッカ)をマップのIntelliJドッカープラグインを使用しています。 context-pathプロパティは適用されません。 /としないとまだ利用可能アプリ/メール/
  2. custom.greeting性のない読み出しプロパティファイルとコントローラが返しから{「挨拶」:ヌル}代わり{「挨拶」:「こんにちはYML」 }ドッカー

    なし

  • コンテキストパスが正しく適用コントローラによって

  • custom.greetingプロパティを返しますが正しく

  • +0

    あなたの 'application.yml'ファイルはどこですか?クラスパスにはないようです。つまり、ドッカーの画像に表示される太った瓶には含まれていません。 –

    +0

    src/main/resourcesの下にあるApplication.ymlパスであり、クラスパス上にあります。@PropertySourceアノテーションを追加して同じ問題が発生しました –

    +0

    'spring-boot-starter-actuator'を追加して、エンドポイント'/env'があなたの環境について教えてくれるものを見てください。 '' applicationConfig:[classpath:/application.yml] ':{"custom.greeting": "..."} ' –

    答えて

    0

    あなたがドッキングウィンドウ/アプリ/ディレクトリ内のapplication.propertiesファイルを追加する必要があります。ウルドッキングウィンドウのディレクトリ構造はとても

    ENTRYPOINT ["java" ,"-Djava.security.egd=file:/dev/./urandom --spring.config.location=classpath:file:/app/application-properties","-jar","/app/main.jar"] 
    

    あなたの全体dockerFileは次のようになります。あなたのドッキングウィンドウのファイルにADD /ur/local/location/application.properties /app/application.properties

    その後

    より良い書き込み、このコマンドを使用して

    app 
        -main.jar 
        -application.properties 
    

    あなたが行うことができますようになります。

    FROM java:8-jre 
    VOLUME /tmp 
    COPY ./mail.jar /app/mail.jar 
    ADD /ur/local/location/application.properties /app/application.properties 
    ENTRYPOINT ["java" ,"-Djava.security.egd=file:/dev/./urandom --spring.config.location=classpath:file:/app/application-properties","-jar","/app/main.jar"] 
    EXPOSE 8080 
    
    0

    Application.ymlの名前をapplication.ymlに変更します。これは、コメントでApplication.ymlとして使用されている名前を参照しています。

    Application.ymlはwidowsとうまく動作しますが、Linuxコンテナ内で壊れます。

    関連する問題