2016-09-27 7 views
0

私はSpringプロジェクトを持っており、application.ymlファイルを使用してそれを構成しています。構成ファイルでプレースホルダを使用してビルドドッカーイメージとして実行すると、プレースホルダは評価されませんが、ドッカーなしでjarを実行すると正常に動作します。ここで何が間違っているのでしょうか?環境変数が構成プレースホルダーで評価されないドッキング・ステーションでのエラー

org.postgresql.util.PSQLException: FATAL: password authentication failed for user "${POSTGRES_DB_USER}" 

application.yml

server: 
    compression: 
    enabled: true 
    mime-types: application/json,application/xml,text/html,text/xml,text/plain 
    context-path:/
    port: 8085 

logging: 
    config: config/log4j2-spring.xml 

spring: 
    datasource: 
    url: jdbc:h2:./data/cdr 
    username: sa 
    password: 
    jpa: 
    hibernate: 
     ddl-auto: create-drop 

security: 
    user: 
    password: secretpassword 

--- 

spring: 
    profiles: docker 
    datasource: 
    url: jdbc:postgresql://postgres/databasename 
    username: ${POSTGRES_DB_USER} 
    password: ${POSTGRES_DB_PASS} 

ドッキングウィンドウ-compose.yml

version: '2' 
services: 
    application: 
    image: domain.com:3000/application:0-SNAPSHOT 
    volumes: 
     - application:/application/logs 
    ports: 
     - 8085:8085 
    links: 
     - postgres 
    environment: 
     PASSWORD: secretpassword 
    postgres: 
    image: sameersbn/postgresql:9.5-2 
    volumes: 
     - postgres-data:/var/lib/postgresql 
    environment: 
     DB_NAME: databasename 
     DB_USER: user 
     DB_PASS: secretpassword 

volumes: 
    postgres-data: 
    driver: local 
    application-logs: 
    driver: local 
+0

を' ENV POSTGRES_DB_USER'などはDockerfileで定義されていますか?環境変数は、ENVで明示的に設定されていない限り、イメージレイヤーに保持されません。 –

+0

ありがとう、私はそれを調べなければなりませんが、ターミナルからjarファイルを実行するときにプレースホルダが壊れていることを今すぐ確認して、これを確認するために裸のSpringプロジェクトを作成しようとしています。 .propertiesファイルの代わりにYAMLファイルを使用すると、プレースホルダが動作しないことがありますか?ドキュメントはあいまいですが、これは私のような春の初心者のためにとても混乱しています。 – Tirithen

+0

そして、私がこれを理解したように、私がpostgresサービス上でDB_USERという名前の変数を設定すると(上のように)、POSTGRES_DB_USER(すべての環境変数が接頭辞としてuppsercaseのサービス名を取得する)としてアクセス可能でなければなりません。ポストグラムのサービスがリンクされている、そうではありませんか? – Tirithen

答えて

0

私はあなたがこのほしいと思う:あなた `application`イメージは持ってい

version: '2' 
services: 
    application: 
    image: domain.com:3000/application:0-SNAPSHOT 
    volumes: 
     - application-logs:/application/logs 
    ports: 
     - 8085:8085 
    environment: 
     POSTGRES_DB_USER: user 
     POSTGRES_DB_PASS: secretpassword 
    postgres: 
    image: sameersbn/postgresql:9.5-2 
    volumes: 
     - postgres-data:/var/lib/postgresql 
    environment: 
     DB_NAME: databasename 
     DB_USER: user 
     DB_PASS: secretpassword 

volumes: 
    postgres-data: {} 
    application-logs: {} 
関連する問題