当前位置: 首页 > 知识库问答 >
问题:

在Localstack Lambda和docker容器之间进行http请求时的HttpRequestException

戎鹏云
2023-03-14

我有两个docker容器作为docker-compose文件的一部分运行,ContainerA是localstack,我在其中运行一个lambda函数,它试图使用以下简化代码向ContainerB发出HTTP POST请求:

var content = new StringContent("{ "content": "sample" }", Encoding.UTF8, "application/json");
var httpClient = new HttpClient();
var response = await HttpClient.PostAsync("http://ContainerB/Foo", content);

这会引发以下异常:

curl http://containerb/foo-h“content-type:application/json”-d“{”content“:”sample“}”

当这个请求从控制台成功时,我非常确信这不是我的docker容器之间的网络问题。

共有1个答案

燕玉堂
2023-03-14

Localstack lambda在每次执行时都在一个新的Docker容器中创建,这个continer位于docker-compose堆栈之外,因此它不是docker-compose默认网络的一部分。有关更多信息,请参阅GitHub问题。

为了解决这一问题,您必须首先在Docker内创建一个外部桥接网络:

Docker network create-D bridge MyNetwork

然后在docker compose文件中将每个docker容器连接到它,并将其注册为外部网络:

services:
  localstack:
    networks:
      - MyNetwork
  ...
  ...

networks:
  MyNetwork:
    external: true
 类似资料:
  • 问题内容: 我是Docker的新手,所以很可能我缺少一些东西。 我正在使用Elasticsearch使用此图像运行容器。 我能够正确设置所有内容。之后,我使用的是一个由同事开发的脚本,用于插入一些数据,基本上是查询MySQL数据库并发出HTTP请求。 问题是,这些请求中的许多请求都会卡住,直到失败。如果我知道了: 有很多要求。在这一点上,我不确定这是否与elasticsearch或泊坞窗有关。如果

  • 我在docker-compose文件中定义了两个容器: 现在,我想通过HTTPURLConnection从Java Web应用程序内部访问URL。 问题:返回400错误 代码是这样的(当我尝试通过curl连接到URL时,标题几乎是相同的--这在容器中起作用哈): -工作-将不工作,但不会出现404错误

  • 我们有一个应用程序接口实现在裸骨Scala Akka HTTP中--一对路由前面的大量计算(CPU和内存密集)。没有集群-所有运行在一个强壮的机器上。计算量相当大--一个独立请求可能需要60多秒才能完成。我们并不那么在意速度。没有阻塞IO,只是大量的CPU处理。 当我开始对它进行性能测试时,出现了一个有趣的模式:假设请求A1、A2、...、A10通过。它们会大量使用资源,结果Akka会为溢出的请求

  • 问题内容: 我已经在网上寻找了一段时间,但没有找到解决我的问题的解决方案,该解决方案与此问题类似,容器之间的DockerHTTP请求。但是这个答案已经是我在计算机上正在做的事情。我正在提供我的docker-compose文件 在我的Web容器中,我向或发出了http get请求,但是我没有看到该请求找到通往应用容器的方式。我在浏览器控制台中看到的是此错误消息。我不确定为什么http请求没有进入应用

  • 我正在开发一个多容器的Docker应用程序,我想要一个容器使用Docker Compose向其他容器的API发出HTTP请求。我收到连接拒绝错误。 这两个容器都运行ASP.NET Core2.2。我使用的IDE是Visual Studio2017。我在用邮递员测试API调用。 DockerFiles Docker组合配置: 服务控制器操作: 卷曲 我还可以使用CURL来稳定与API RESTend

  • 在实际操作中,我要启动一个容器: