gpt4 book ai didi

spring - 在 docker-compose 中的 spring boot 应用程序中使用外部配置

转载 作者:行者123 更新时间:2023-12-05 01:18:21 26 4
gpt4 key购买 nike

我有一个 spring boot 应用程序,它使用 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/文件夹?

最佳答案

the comments 中所述,第一步是mount a host directory in a docker container (就像你为卡夫卡所做的那样)。例如,您可以使用:

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

NOTE: The linked answer also mentions that you can add it within your Dockerfile using ADD. However, this will add it to the image itself. If you make a change to the configuration, you'll have to rebuild your image to make those changes work.

下一步是告诉Spring boot使用这个配置文件。如果您想要一个完全自定义的位置(例如 /config/config.properties),那么您可以使用 spring.config.location启动时的参数。

NOTE: Spring boot will automatically pick up your configuration if it's located in certain folders. Otherwise you'll have to configure it with 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

关于spring - 在 docker-compose 中的 spring boot 应用程序中使用外部配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46315744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com