[英]Docker-compose: Issue while running the spring boot enabled and spring cloud config application
[英]Using external config in spring boot application within docker-compose
我有一個春季啟動應用程序,它使用com.spotify.dockerfile-maven-plugin
構建我的應用程序org.rtu / some-importer的docker映像。
我的docker-compose.yml是:
version: '3'
services:
some-importer:
image: org.rtu/some-importer
build: .
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 172.17.0.1
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
我如何說在docker-compose up
期間應該在/data/some-importer/config
文件夾中使用外部config.properties
?
如評論中所述 ,第一步是將主機目錄掛載到Docker容器中 (就像您對Kafka所做的一樣)。 例如,您可以使用:
version: '3'
services:
some-importer:
image: org.rtu/some-importer
build: .
# Adding a volume/mount
volumes:
- /data/some-importer/config:/config
這會將/data/some-importer/config
文件夾映射到Docker容器中的/config
。
注意 :鏈接的答案還提到您可以使用
ADD
將其添加到Dockerfile
中。 但是,這會將其添加到圖像本身。 如果對配置進行更改,則必須重建映像以使這些更改生效。
下一步是告訴Spring Boot使用此配置文件。 如果您想要一個完全自定義的位置(例如/config/config.properties
),則可以在啟動期間使用spring.config.location
參數。
注意 :如果Spring Boot位於某些文件夾中,它將自動選擇您的配置。 否則,您必須使用
spring.config.location
進行配置。
我不知道您的圖片看起來如何,但是您應該可以執行以下操作:
ENTRYPOINT [ "sh", "-c", "java -jar /app.jar --spring.config.location=$CONFIG_LOCATION" ]
我在這里使用了一個名為$CONFIG_LOCATION
的環境變量,這使得使用環境變量更容易自定義位置。 例如,您可以在docker-compose.yml
文件中添加以下內容:
version: '3'
services:
some-importer:
image: org.rtu/some-importer
build: .
volumes:
- /data/some-importer/config:/config
# Configuring the environment variable
environment:
- CONFIG_LOCATION=file:/config/config.properties
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.