gpt4 book ai didi

spring-boot - docker 端口不可用

转载 作者:行者123 更新时间:2023-12-02 19:05:20 31 4
gpt4 key购买 nike

我有一个尝试通过Docker运行的spring-config-sever项目。我可以从命令行运行它,我的其他服务和浏览器可以通过以下方式成功连接:

http://localhost:8980/aservice/dev



但是,如果我通过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
EXPOSE 8980
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/my-config-server-0.1.0.jar"]

我通过建立:

docker build -t my-config-server .



我通过以下方式运行它:

docker run my-config-server -p 8980:8980



然后我确认它正在通过运行

docker ps


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

当我通过Docker运行它时,浏览失败并显示“ERR_CONNECTION_REFUSED”,而我的调用服务失败并显示:

Could not locate PropertySource: I/O error on GET request for "http://localhost:8980/aservice/dev": Connection refused (Connection refused);

最佳答案

根据评论添加完整答案。

首先,必须在图像名称之前指定-pdocker run -p 8980:8980 my-config-server

其次,仅使用主机端口配置localhost不会使您的my-service容器与其他容器通信。容器中的locahost在其内部(而不是主机)内。您将需要使用适当的docker networking model,以便两个容器都可以相互通信。

如果您使用的是Linux,则默认值为Bridge,因此可以将my-config-server容器ip docker inspect {containerIp-of-config-server}配置为配置服务器端点。

例如,如果您的my-config-server ip是172.17.0.2,则端点是-http://172.17.0.2:8980/

spring:
cloud:
config:
uri: http://172.17.0.2:8980

只需遵循Docker文档,即可对网络的工作原理有更多的了解。
https://docs.docker.com/network/network-tutorial-standalone/
https://docs.docker.com/v17.09/engine/userguide/networking/

如果要使用docker-compose启动两个容器,则可以使用服务名称链接两个容器。只需遵循 Networking in Compose即可。

关于spring-boot - docker 端口不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53980399/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com