gpt4 book ai didi

node.js - 如何从AWS SAM本地Docker容器访问另一个Docker容器(运行 Node express 服务器)?

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

我们正在使用SAM Local在API网关中调用Lambda进行本地开发。 SAM Local使用Docker容器(设置应尽可能接近Lambda节点运行时)来执行此操作。我们希望该Lambda以运行在另一个容器中的某些Node Express服务器的形式访问API Mocking服务中的一些数据(如果需要,也可以在本地运行)。这两个容器都位于用户创建的Docker桥接网络中,该网络如下创建:docker network create sam-demoAPI模拟服务已运行并已添加到桥接网络:docker run --network sam-demo --name mock -d -P mock:latestLambda在 Debug模式下被调用并添加到网桥网络中:sam local start-api -t template.json -d 9229 --docker-network sam-demo检查网桥网络会发现SAM本地lambda(wizardly_knuth)和模拟都在这里:

        "Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.20.0.0/16",
"Gateway": "172.20.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"5ebfa4295a56e4df840676a2e214891543fd4e8cb271ed70ddd67946ab451119": {
"Name": "wizardly_knuth",
"EndpointID": "xxx",
"MacAddress": "02:42:ac:14:00:03",
"IPv4Address": "172.20.0.3/16",
"IPv6Address": ""
},
"d735c9aa840e4ce7180444cf168cd6b68451c9ca29ba87b7cb23edff11abea7b": {
"Name": "mock",
"EndpointID": "xxx",
"MacAddress": "02:42:ac:14:00:02",
"IPv4Address": "172.20.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
现在,Lambda打假游戏的网址应该是什么?根据 Docker docs,它应该是模拟容器的IPv4Address,即 http://172.20.0.2,但是我不确定哪个端口或如何找到哪个端口?
我可以执行模拟并成功ping SAM Local容器,但是我不能从SAM Local容器中执行相同操作,因为 shell 没有安装ping,curl,nc或其他任何东西。
我无法直接从我的机器上访问Mock容器,因为它是Mac,我认为这样做存在问题。
任何建议或后续步骤将不胜感激。
非常感谢,
山姆

最佳答案

更新

最后,我放弃了这种方法,因为我不知道Lambda的URL应该是什么,以便在Docker Bridge网络中实现模拟。
另一种方法是使用此URL实际上直接从Lambda中命中了模拟Docker容器(模拟容器暴露了端口3002):

http://docker.for.mac.localhost:3002/
希望这可以帮助某人。...请让我知道是否有人解决了我最初发布的桥接网络问题。
谢谢,
山姆

关于node.js - 如何从AWS SAM本地Docker容器访问另一个Docker容器(运行 Node express 服务器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63726474/

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