簡體   English   中英

在docker-compose的Spring Boot應用程序中使用外部配置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM