Dockerfile部署Java项目挂载使用外部配置文件
需求是由于java项目使用的是nacos 而且每次部署nacos服务器ip不一样导致要重新打包,想引入外部配置文件进行打包
1.需求是由于java项目使用的是nacos 而且每次部署nacos服务器ip不一样导致要重新打包,想引入外部配置文件进行打包 解决方案
SpringBoot配置文件的加载路径优先级
在讲解Docker运行Java项目挂载使用外部配置文件之前,需要了解SpringBoot的配置文件加载路径优先级~
优先级(从高到低):
工程根目录:
./config/
工程根目录:
./
classpath:/config/
classpath:/
2.当Springboot打成JAR包(不包含配置文件),读取外部配置文件application.properties时,可以选择:
- 1.把application.properties放在在项目名.jar的同级目录下。
- 2.在项目名.jar同级目录,创建一个config文件夹,把application.properties放进去。
3.项⽬使⽤容器内tmp⽬录下的application.properties
配置⽂件
java
FROM java:8-alpine
ENTRYPOINT java -jar /tmp/app.jar --spring.config.additional-location=/tmp/application.properties
4.最终配置文件
java
FROM openjdk:8
# 将当前目录下的*.jar添加到镜像中去,并且命名为app.jar
ADD ./track-web-exe.jar app.jar
# 开放tcp端口
EXPOSE 8182/tcp
ENV LANG C.UTF-8
# copy 修改启动配置文件 以下2种方法均可以
# COPY ./bootstrap.yml ./config/bootstrap.yml
COPY ./bootstrap.yml ./bootstrap.yml
# 镜像启动的时候执行这个命令
CMD exec java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar