Rom*_*n T 2 spring spring-boot docker-compose
我有一个 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
Run Code Online (Sandbox Code Playgroud)
我怎么能说的过程中docker-compose up,它应该使用一个外部config.properties的/data/some-importer/config文件夹?
正如评论中提到的,第一步是在 docker 容器中挂载一个主机目录(就像你为 Kafka 所做的那样)。例如,您可以使用:
version: '3'
services:
some-importer:
image: org.rtu/some-importer
build: .
# Adding a volume/mount
volumes:
- /data/some-importer/config:/config
Run Code Online (Sandbox Code Playgroud)
这会将/data/some-importer/config文件夹映射到/configDocker 容器中。
注意:链接的答案还提到您可以在
Dockerfileusing 中添加它ADD。但是,这会将其添加到图像本身。如果对配置进行更改,则必须重建映像以使这些更改生效。
下一步是告诉 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" ]
Run Code Online (Sandbox Code Playgroud)
我正在使用一个名为$CONFIG_LOCATIONhere的环境变量,这使得使用环境变量自定义位置变得更加容易。例如,您可以在docker-compose.yml文件中添加以下内容:
ENTRYPOINT [ "sh", "-c", "java -jar /app.jar --spring.config.location=$CONFIG_LOCATION" ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8874 次 |
| 最近记录: |