Spring boot docker端口不可用
我有一个spring配置服务器项目,我正试图通过Docker运行它。我可以从命令行运行它,并通过以下方式成功连接我的其他服务和浏览器: 但是,如果我通过Docker运行它,调用将失败 我的配置服务器有一个Dockerfile:Spring boot docker端口不可用,spring-boot,docker,Spring Boot,Docker,我有一个spring配置服务器项目,我正试图通过Docker运行它。我可以从命令行运行它,并通过以下方式成功连接我的其他服务和浏览器: 但是,如果我通过Docker运行它,调用将失败 我的配置服务器有一个Dockerfile: FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=build/libs/my-config-server-0.1.0.jar ADD ${JAR_FILE} my-config-server-0.1.0.jar EXP
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=build/libs/my-config-server-0.1.0.jar
ADD ${JAR_FILE} my-config-server-0.1.0.jar
EXPOSE 8980
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/my-config-server-0.1.0.jar"]
我通过以下方式构建:
docker build-t我的配置服务器
我通过以下方式运行它:
docker运行我的配置服务器-p 8980:8980
然后我确认它正在通过
docker ps
当我通过Docker运行它时,浏览失败,出现“ERR_CONNECTION_densed”,我的呼叫服务失败,原因是:
找不到PropertySource:GET请求时发生I/O错误
“”:连接被拒绝(连接被拒绝)
拒绝)
我可以想象应用程序只在本地主机上侦听,即127.0.0.1 您可能希望尝试将属性
server.address
设置为0.0.0
。
然后,端口8980也应该在外部可用。根据注释添加完整答案 首先,必须在图像名称之前指定
-p
。
docker run-P8980:8980我的配置服务器
其次,仅使用主机端口配置localhost
,不会使您的“我的服务”容器与其他容器通信<代码>locahost容器中的容器位于自身内部(而非主机)。您需要使用适当的容器,以便两个容器可以相互通信
如果您在Linux上,默认值是Bridge
,因此您可以将my config server容器ipdocker inspect{containerIp of config server}
配置为配置服务器端点
示例:如果我的配置服务器ip为172.17.0.2,则端点为-
只要遵循docker文档,就可以对网络的工作原理有更多的了解。
如果您想使用docker compose加速两个容器,那么可以使用服务名称链接这两个容器。只需遵循。看起来主机端口未映射。尝试
docker run-p 8980:8980 my config server
。我认为这是一个很好的开始。通过更改每个Imran的命令,我可以在docker中运行配置服务器,并在浏览器中查看属性。但是,其他停靠服务仍在获取c.c.c.ConfigServicePropertySourceLocator:无法找到PropertySource:获取请求时的I/O错误“http://localhost:8980/aservice/dev“:连接被拒绝
。我将通过以下方式启动这些服务:docker run-e“SPRING\u PROFILES\u ACTIVE=dev”-p 3009:8980-t aservice
感谢您的出色回答。我通过Mac上的“ifconfig”找到了我的本地ip。然后我通过:docker-run-e“SPRING\u PROFILES\u ACTIVE=dev”-e“SPRING\u CLOUD\u CONFIG\u URL=HTTP://10.0.0.143:8980”-p3009:8980-t我的配置服务器传递了它
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cecafdf99fe my-config-server "java -Djava.securit…" 14 seconds ago Up 13 seconds 8980/tcp suspicious_brahmagupta
spring:
cloud:
config:
uri: http://172.17.0.2:8980