【发布时间】:2021-04-28 11:32:36
【问题描述】:
我正在尝试创建一个示例来创建两个 WEB API 并将它们容器化并在它们之间进行通信。 我想看看 side car 设计模式,我在 Github 中找到了一个我正在尝试运行的示例。
https://github.com/cesaroll/dotnet-sidecar
在上面的示例中,HelloAPI 调用了另一个项目的 HelloSideCar API。 在 HelloAPI 中调用另一个项目中的另一个 API。我正在尝试使用 Docker Compose 在本地运行。
当我尝试将 API 从 HelloAPI(localhost:8080/FromSidecar) 项目访问到 SideCarAPI 时,我看到 404 错误,请求不会发送到另一个容器 下面是我的 Docker Compose
# docker-compose up -d
# docker-compose stop
# docker-compose rm -f
version: '3.8'
services:
hello-sidecar-api:
image: hello-sidecar-api:latest
container_name: hello-sidecar-api
ports:
- "8180:8080"
hello-api:
image: helloapi:latest
container_name: hello-api
environment:
- SIDERCAR_URL=http://localhost:8180/
depends_on:
- hello-sidecar-api
ports:
- "8080:8080"
【问题讨论】:
-
据我了解,如果其他容器位于同一网络上并通过
http://container_name:port,您可以访问它们。您可能需要为其创建一个桥接网络或检查 url -
@NanoBit Compose 为您创建一个名为
default的网络;您通常不需要显式的networks:块。 Docker 文档中的Networking in Compose 对此进行了进一步描述。 -
这两个容器有什么作用?您提出什么请求,向哪个 URL 发出请求,从哪里获得响应?环境变量
SIDECAR_URL中是否应该有一个额外的R? -
@DavidMaze,感谢您在那里纠正我。我一直使用桥接网络,所以我从未尝试过默认网络。 OP,您是否尝试过访问 localhost:8180 并查看是否可以通过 Postman 等其他应用访问它。
标签: docker docker-compose sidecar