我构建了一个查询DynamoDB的Spring Boot REST API,我想配置一个或两个作为微服务运行的Docker容器:一个在本地运行DynamoDB,另一个运行REST API。我有一个为Spring Boot REST API配置的容器,但是当我调用API时,即使DynamoDB在localhost:8000上运行,它也无法查询本地DynamoDB。我得到的错误是:
Unable to execute HTTP request: Connect to localhost:8000 [localhost/127.0.0.1] failed: Connection refused (Connection refused)
尽管收到了这条消息,但我可以使用浏览器通过localhost访问DynamoDB。就好像Docker容器不允许API访问localhost:8000,即使API容器在localhost:8080上运行。
我应该如何配置我的容器,使每个容器作为单独的微服务运行?有没有人见过类似的问题?
答案 0 :(得分:1)
localhost 并不指向真实的计算机主机。字面上,当您在任何docker容器中使用 localhost 时,它将指向容器本身。
Docker提供了两种处理此情境的方法:
链接。在新项目中,这是不推荐使用的方式和should be avoided。
网络。 Docker可以建立一个网络,您可以通过DNS名称(容器ID或容器名称)访问容器。
在way described here中创建一个网络,用数据库容器名称替换localhost
,您就可以开始了。
答案 1 :(得分:0)
默认情况下,容器非常孤立并在不同的网络中运行。您必须使用 - - link setting:
将DinamoDB容器链接到Spring Boot容器