首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.net.ConnectException:连接拒绝(连接拒绝):Docker + Spring

java.net.ConnectException:连接拒绝(连接拒绝):Docker + Spring
EN

Stack Overflow用户
提问于 2021-04-29 10:49:30
回答 1查看 883关注 0票数 0

我有一个要使用的外部API,为此我使用了WebTarget。

代码语言:javascript
复制
private final String target_url = "http://localhost:3000/models";
WebTarget target = client.target(target_url);
GenericType<List<Model>> genericType = new GenericType<List<Model>>() {};
List<Model> modelList = target.request(MediaType.APPLICATION_JSON_VALUE).get(genericType);
代码语言:javascript
复制
server.port=3001

它在没有停靠器的情况下工作正常,我可以在http://localhost:3000访问外部API。

但有了码头我不能。

Dockerfile

代码语言:javascript
复制
FROM openjdk:8-jre-slim

COPY target/*.jar app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

两个容器都在同一个网络中。

命令:

代码语言:javascript
复制
docker run --rm -p 3001:3001 --network external-api image-name:version

要运行外部API,我将执行

代码语言:javascript
复制
docker run --rm -p 3000:3000 --network external-api external-api-image-name:version

我还在两个容器之间执行ping。

代码语言:javascript
复制
docker exec -ti 0d1e786b3f06 ping 19c5bb4ab4d5
PING 19c5bb4ab4d5 (172.27.0.2): 56 data bytes
64 bytes from 172.27.0.2: seq=0 ttl=64 time=0.232 ms
64 bytes from 172.27.0.2: seq=1 ttl=64 time=0.098 ms
64 bytes from 172.27.0.2: seq=2 ttl=64 time=0.169 ms
64 bytes from 172.27.0.2: seq=3 ttl=64 time=0.188 ms

错误:

代码语言:javascript
复制
java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_292]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_292]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_292]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_292]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_292]
    at java.net.Socket.connect(Socket.java:607) ~[na:1.8.0_292]
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175) ~[na:1.8.0_292]
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) ~[na:1.8.0_292]
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) ~[na:1.8.0_292]
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242) ~[na:1.8.0_292]
    .
    .
    .
EN

回答 1

Stack Overflow用户

发布于 2021-04-30 10:08:03

容器无法在localhost中访问String target_url的问题。您应该在配置文件或属性中重写它。例如,您可以将您的target_url移动到类字段,并对其进行@Value(external.api.url)注释,并在application.propeties中添加external.api.url=your_container_name:port/uri

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67315875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档