Docker上的外部SpringBoot属性文件

时间:2018-03-03 03:55:09

标签: docker spring-boot

我目前正在尝试从Spring Boot应用程序的默认位置/src/main/resouces/application.yml自动外化我的application.yml文件。我知道目前Spring Cloud Server是一种很好的或者首选的方式,但是目前我的情况可能不适合。

我目前正在尝试从.yml中提取.jar文件,然后将其复制到我想要的文件夹中。

不幸的是,我似乎根本没有得到它!在某些时候,我尝试运行RUN ls -lrt /tmp/config,即使我从COPY命令获得成功消息,它也总是为空。

这是我当前的设置:

Dockerfile:

FROM openjdk:8-jdk-alpine

VOLUME ["/tmp", "/tmp/config", "/tmp/logs"]

ADD /target/*.jar app.jar

RUN apk add --update unzip && unzip app.jar "*application.yml" && ls -lrt

RUN ls -lrt /BOOT-INF/classes

RUN cp /BOOT-INF/classes/application.yml tmp/config

RUN ls -lrt tmp/config 
# ----> Total 0

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar", "--spring.config.location=file:/tmp/config/application.yml"]

在我的docker-compose.yml中,我有一个我上面定义的所有三个VOLUMES的映射。

你们有没有想过如何解决这个问题,而不会让用户在首次部署时将.yml文件放在目录中?

祝你好运, 恩里科贝加莫

1 个答案:

答案 0 :(得分:0)

最后我决定保持简单,并为另外的application.yml文件安装了一个卷。在运行容器之前,我创建了目录并将新的.yml文件放在这个目录中并且它可以解决问题:)

FROM openjdk:8-jre-alpine

VOLUME ["/tmp", "/tmp/config", "/tmp/logs"]

ADD /target/*.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar", "--spring.config.location=classpath:/application.yml,file:/tmp/config/application.yml"]
相关问题