我目前正在尝试从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文件放在目录中?
祝你好运, 恩里科贝加莫
答案 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"]