java – Mac主机不喜欢Docker容器端口转发
我是第一次尝试使用Docker,我正试图让一个Spring Boot Web应用程序在Docker容器中运行.我正在构建应用程序(将其打包成一个独立的jar),然后将其添加到Docker镜像(这就是我想要的). 您可以在Bootup repo on GitHub找到我的SSCCE,其自述文件具有重现我所看到的所有说明.但基本上: >我将Web应用程序构建到jar中 docker ps输出:
Web应用程序是configured to run on port 9200,而不是Java默认值8080.您可以通过运行./gradlew clean build&&&和amp;& amp;& amp;& amp;& java -jar build / libs / bootup.jar. 据我所知,我的主机上没有运行阻止端口的防火墙(我在Mac 10.11.5上验证了系统偏好设置>>安全和隐私>>防火墙已关闭). 谁能发现我出错的地方? 更新: 我在主机上运行了curl,netstat和lsof:
然后docker执行到容器中并运行另一个netstat:
更新w /照片: 我的浏览器(Chrome)图片指向http:// localhost:9200: http:// localhost:9200源代码的图片: Chrome Developer Tools在http:// localhost:9200检查页面的图片: Chrome开发者工具中“网络”标签的图片: 这到底是怎么回事?!?!?根据消息来源,浏览器应该从Dockerland渲染我的井!消息就好了.根据实际的浏览器页面,看起来有网络错误.根据Chrome开发者工具,我的应用程序正在返回各种HTML / CSS / JS内容,这些内容甚至远离我的应用程序(请查看源代码,亲自查看)! 最佳答案
要在这里添加另一个答案,因为我看到了与您发布的Github Repo相关的内容:
因此repo是一个带有application.yml文件的spring boot repo. 您的Dockerfile如下所示:
这是将构建的jar添加到图像中.如果我的理解是正确的,那么jar不包含application.yml,因为: >它不是构建的一部分(gradle只打包src / main).它位于项目根文件夹中 因此,可以假设您的应用程序实际上是在8080(默认值)上运行? 可以尝试的几个选项: >尝试暴露8080而不是9200(或暴露两者),看看是否有所作为? 参考 Spring Boot reference documentation on the order of loading for external configuration (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |