0
我有一個Spring項目並使用application.yml文件來運行配置它。在配置文件中使用佔位符並將其作爲構建的泊塢窗圖像運行時,它不會評估佔位符,而在沒有docker的情況下運行jar時,此功能正常工作。這裏有什麼可能是錯的?Docker上的Spring,未使用配置佔位符評估的環境變量
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
貴'application'圖像有'ENV PostgreSQL_DB_USER'等在Dockerfile中定義?環境變量不會保留在圖像層中,除非它們用'ENV'明確設置。 –
謝謝我必須研究這個問題,但是現在看起來好像佔位符在從終端運行jar時也壞了,現在嘗試創建一個裸露的Spring Spring項目來確認這一點。使用YAML文件而不是.properties文件時,佔位符可能無法工作?這個文檔很模糊,對於像我這樣的Spring初學者來說,這非常混亂。 – Tirithen
順便說一下,如果我在postgres服務上設置了一個名爲DB_USER的變量(如上所述),那麼它應該可以作爲POSTGRES_DB_USER(所有環境變量都獲得uppsercase中的服務名稱作爲前綴)訪問postgres服務鏈接,是不是這樣? – Tirithen