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
を' ENV POSTGRES_DB_USER'などはDockerfileで定義されていますか?環境変数は、ENVで明示的に設定されていない限り、イメージレイヤーに保持されません。 –
ありがとう、私はそれを調べなければなりませんが、ターミナルからjarファイルを実行するときにプレースホルダが壊れていることを今すぐ確認して、これを確認するために裸のSpringプロジェクトを作成しようとしています。 .propertiesファイルの代わりにYAMLファイルを使用すると、プレースホルダが動作しないことがありますか?ドキュメントはあいまいですが、これは私のような春の初心者のためにとても混乱しています。 – Tirithen
そして、私がこれを理解したように、私がpostgresサービス上でDB_USERという名前の変数を設定すると(上のように)、POSTGRES_DB_USER(すべての環境変数が接頭辞としてuppsercaseのサービス名を取得する)としてアクセス可能でなければなりません。ポストグラムのサービスがリンクされている、そうではありませんか? – Tirithen