如何连接到本地主机上的第三方容器?

时间:2021-04-05 12:03:01

标签: java docker networking

我有几个第三方容器

docker run --rm -e server.port=8081 -p 8081:8081 thing/app &
docker run --rm -e server.port=8082 -p 8082:8082 thing/app &
docker run --rm -e server.port=8083 -p 8083:8083 thing/app &

我不能给它们命名,也不能将它们添加到特定的网络,因为我不允许调整它们的配置!

我的自定义容器有以下配置

FROM openjdk:11
RUN mkdir -p /build
WORKDIR /build
COPY . /build
RUN ./gradlew build
EXPOSE 8080
CMD java -jar ./build/libs/bidding-system-0.0.1-SNAPSHOT.jar

我构建了一个运行我的容器,将请求转发到上述服务。

docker build -t local/myapp . &&
docker run --rm -p 8080:8080 local/myapp

访问 8080 端口上的容器工作正常。一旦服务尝试使用

转发请求
restTemplate.postForEntity(clientUrl, request(bidRequest), BidResponse.class).getBody();

当 clientUrl 为 http://localhost:808x 时,过程失败

java.net.ConnectException: Connection refused (Connection refused)

我试过 --network=host 可以在我的服务器上运行。根据 Docker 文档,它在我的 Mac 上不起作用

The host networking driver only works on Linux hosts, and is not supported on 
Docker Desktop for Mac, Docker Desktop for Windows, or Docker EE for Windows Server.

在不为第三方容器指定名称且不使用 --network=host 的情况下,如何使它们可供我的容器访问它们?

第三方服务的端点是公开的,可以通过本地主机上的平面 HTTP 访问。我假设它应该像查询任何随机网络服务一样简单 - 但我无法正确调用。

0 个答案:

没有答案