gpt4 book ai didi

docker - Feign.Builder "target values must be absolute"错误: how to call docker container with absolute url?

转载 作者:行者123 更新时间:2023-12-02 19:23:43 69 4
gpt4 key购买 nike

我有几个与 OpenFeign 相互通信的微服务.每个都是一个项目的子模块(称为“父”),具有自己的 docker 容器。

好的。所以,当我想用​​ feign.builder().target() 建立一个客户端时方法,发生错误,声称“目标值必须是绝对的”。我检查了源代码,它的意思是(feign.RequestTemplate.target(RequestTemplate.java:447)):

  public static boolean isAbsolute(String uri) {
return uri != null && !uri.isEmpty() && uri.startsWith("http");
}

问题来了:其他服务的url是这样的:
another-service:8080/check

在本地测试中,这不是问题,因为配置文件 localhttp://localhost:8080等等。但是在端到端测试中,这不能绕过绝对检查。

那么,现在该怎么办?

最佳答案

我刚刚添加了 http://在服务名称之前,这是固定的。
看起来在创建需要相互通信的容器时,docker 做了两件事:

  • 创建由这些容器组成的网络,并为每个容器分配 IP。在我的情况下,IP 就像 172.26.0.2 ,而不是 localhost192.168.xx.xx .
  • 充当 DNS 服务器:它将 IP 映射到与 docker-compose.yml 中的服务名称相同的域.喜欢,在 docker-compose.yml我有 service-A ,在docker的网络中,我可以docker exec -it bash运行 shell 和 curl http://service-A:8080参观它。

  • 请注意,我使用的是内部端口,而不是“外部”端口。例如,如果服务 A 的端口配置如下:
    ports:
    - "8083:8080"
    在网络内部(来自其他容器的 curl)我们使用 8080,但从“外部”(来自主机,使用 Postman)我们使用 8083。
    PS:
    我用了 uname -a检查容器的 dist 是 Debian,然后我 apt update && apt install curl安装 curl可执行。

    关于docker - Feign.Builder "target values must be absolute"错误: how to call docker container with absolute url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57975808/

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