刚学springcloud不久,实战时进行docker部署第一个服务就出了问题,把spring cloud config做好在IDE里测试了一遍发现没问题后,但是做成docker镜像运行发现无法正确读取到仓库里的配置文件。
直接运行jar能够正常读取到配置文件
java -jar itoken-config-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod
访问仓库的资源路径
测试没有问题后,做成镜像发布,Dockerfile如下:
FROM openjdk:8-jre
WORKDIR /app
COPY itoken-config-1.0.0-SNAPSHOT.jar .
CMD ["java","-jar","itoken-config-1.0.0-SNAPSHOT.jar","-Dspring.profiles.active=prod"]
EXPOSE 8888
docker run 后访问同一资源路径
无法正常读取仓库
Operating System: Ubuntu 18.04.2 LTS
Docker Version: 18.09.6
已解决
原因是docker没学到家,忘了宿主机定义的hosts和容器不是共享的。。。。。
注意: 如果你定义了宿主机的hosts,但是部署使用的是docker,那么遇到的问题可能和我是一样的!其他情况请另找原因!
首先我建议检查一下你的 spring cloud config 的配置,中心仓库地址是不是用的映射域名,如果是的话,那么意味着你做的 docker 镜像没有提供相应的 hosts 修改,这有两种解决方案,一是修改 config 配置,使用你的的ip;二是重新编写Dockerfile,修改容器中的hosts。