docker启动无法指定配置文件
现象在使用docker 启动spirng cloud时,其他几个项目都能正常在启动docker时使用docker run -d -p 8080:8080 --name lkp-server lkp-server --spring.profiles.active=lkpdev这种方式启动配置来读取响应的配置文件;但是其中有个项目在启动时却在指定配置文件时无法读取;但是在直接启动jar包时可以...
·
现象
在使用docker 启动spirng cloud时,其他几个项目都能正常在启动docker时使用
docker run -d -p 8080:8080 --name lkp-server lkp-server --spring.profiles.active=lkpdev
这种方式启动配置来读取响应的配置文件;但是其中有个项目在启动时却在指定配置文件时无法读取;但是在直接启动jar包时可以指定配置文件;那么就说明应该不是java程序打包没有把配置文件打到jar包里的原因;
进入已经启动的容器内部使用ps进行查看容器中启动的java进程:
可以看到这个项目在启动时是没有加载 --spring.profiles.active配置参数的;下面我来贴一个正常的启动后的程序
由此可见是一定是在构建docker镜像时哪个步骤出现了问题于是对比Dockerfile文件
对比Dockerfile
- 启动正常的java程序的配置文件
FROM openjdk:8-jdk-alpine
RUN mkdir /app
ADD target/***.jar /app/***.jar
WORKDIR /app
ENV JAVA_OPTS=""
ENTRYPOINT ["java","-Duser.timezone=GMT+08 -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=utf-8","-jar","***.jar"]
- 启动不正常的配置文件
FROM openjdk:8-jdk-alpine
RUN mkdir /app
ADD target/***.jar /app/***.jar
WORKDIR /app
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Dfile.encoding=utf-8 -jar csizg-***.jar" ]
EXPOSE 8080
问题是出现在这 ENTRYPOINT 参数中 又指定了一下 $JAVA_OPTS 导致了无法在启动时读取到启动时加载的参数
更多推荐
已为社区贡献3条内容
所有评论(0)