gpt4 book ai didi

docker - Docker和Spring Boot

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

我们有许多Spring Boot应用程序,并开始使用Docker进行“容器化”。

现在,我们在他们的application.yml文件中运行了Eureka(Spring Boot)并运行了客户端应用程序(所有其他Spring Boot应用程序)。

eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/

这在 dockerization之前可以在 上运行。

现在,当我对一个(Eureka客户端)应用程序进行docker化(Eureka服务程序仍未进行dockerized)时,由于Eureka不在同一容器中运行,因此我无法使用“localhost”。我能够通过复制其网址(192.168.2.77)连接到 Eureka ,因此以上内容变为:
eureka:
client:
serviceUrl:
defaultZone: http://192.168.2.77:8761/eureka/

这有效。

问题1 :

当Eureka服务器得到docker化时,我如何将其URL传递给客户端应用程序?我想我可以将上述设置为:
eureka:
client:
serviceUrl:
defaultZone: ${eurekaURL}

并在启动容器时使用“-e eurekaURL:xyz”,但是如何获得Eureka服务器IP ...理想情况下是动态的?

问题2 :

Spring Boot应用程序未分配端口。在他们的application.yml文件中,我使用:
server.port: 0

以便分配任何可用的端口。

但是,要公开端口以便可以访问正在运行的Web应用程序,请在docker命令中公开一个端口(... -p 8080:8080 ...)。这是怎么回事,因为直到Spring Boot应用程序启动时才知道“可用端口”?

最佳答案

问题1::您可以为eureka容器使用别名,并为所有服务提供一个网络。例如,您可以将一个docker-compose与所有容器和defaultZone: http://eureka-service:8761/eureka/一起使用。 eureka-serviceeureka实例的别名。

例如,您可能需要application.yml服务

 client:
serviceUrl:
defaultZone: ${eureka_url:http://eureka-server:8761/eureka/}

docker-compose的示例。 Docker-compose将为所有服务创建一个网络
  eureka-server:
image: eureka-server
ports:
- "8761:8761"

Full github example

问题2::为此,我将使用一些网关。例如,代理将能够将请求分发到某些微服务。 The API Gateway Pattern(基于Zuul代理)。使用eureka的一个网络中的服务将确定每种服务使用哪个端口。

在上面的示例中,它们还使用zuul网关。使用网关,您不需要为每个微服务公开端口。您还可以进行其他监控和安全性。

关于docker - Docker和Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45698893/

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