Spring Boot +带有Docker的DynamoDB Local:连接到localhost:8000失败

我构build了一个查询DynamoDB的Spring Boot REST API,我想configuration一个或两个作为微服务运行的Docker容器:一个在本地运行DynamoDB,另一个运行REST API。 我为Spring Boot REST APIconfiguration了一个容器,但是当我调用API时,即使DynamoDB在localhost:8000上运行,也无法查询本地DynamoDB。 我得到的错误是:

Unable to execute HTTP request: Connect to localhost:8000 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

尽pipe得到这个消息,我可以使用我的浏览器通过本地主机访问DynamoDB。 就好像Docker容器不允许API访问localhost:8000,即使API容器在localhost:8080上运行。

我应该如何configuration我的容器,使每个运行作为一个单独的微服务? 有没有人见过类似的问题?

容器内的localhost并不指向真正的机器主机。 从字面上看,当你在Docker容器中使用localhost时,它将指向容器本身。

Docker提供了两种处理这个问题的方法:

链接。 这是废弃的方式, 应该在新项目中避免 。

networking。 Docker可以build立一个networking,您可以通过DNS名称(容器ID或容器名称)访问您的容器。

按照这里描述的方式创build一个networking,用DB容器的名称replacelocalhost ,然后就可以开始了。

默认情况下,容器相当孤立,在不同的networking中运行。 您必须使用链接设置将DinamoDB容器链接到Spring Boot容器中:

https://deis.com/blog/2016/connecting-docker-containers-1/