我希望能够使用主机而不是服务名称连接到localstack。我已将localstack
图像添加到我的docker-compose文件中并设置了network_mode: "host"
。我可以从其他容器连接到http://localhost:8080
。但是,我无法从主机连接到:http://localhost:8080
。如何使用本地主机而不是服务名称连接到容器?不知道我是否误解了network_mode: "host"
的作用。
version: "3"
services:
localstack:
image: localstack/localstack:latest
network_mode: "host"
ports:
- "4567-4584:4567-4584"
- "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
environment:
- AWS_REGION=us-east-1
- SERVICES=sqs
问题是我正在使用CircleCI来运行一些组件测试,但是似乎在CircleCI中,您只能在localhost上引用其他服务,而不能通过服务名称来引用。这意味着我的本地环境和测试环境配置之间存在一些差异。我尝试在CircleCI中运行docker-compose,但这样做时似乎在本地吓坏了。所以我想看看是否可以在docker-compose中的服务之间引用localhost。
答案 0 :(得分:1)
发生这种情况是因为Docker for Mac使用xhyve虚拟机管理程序在虚拟机内部运行,而不是在macOS上本地运行。
使用net=host
运行容器时,实际上是在使用VM的网络,而不是本地计算机的网络。
鉴于其工作方式的本质,这是Docker for mac的已知限制。
访问容器的唯一方法是使用端口映射,因此,如果您从docker-compose文件中删除network_mode:"host"
,则它应该已经在映射端口了。