所以我尝试使用 *.localhost 格式(例如 front.localhost 和 sdk.localhost)设置 Docker 环境,浏览器会自动将其识别为指向 127.0.0.1,但不会不需要手动修改主机。
虽然我的问题如下: front.localhost 是一个 Next/Nuxt 应用程序,它需要能够直接从浏览器(工作正常)以及从容器中的后端调用 sdk.localhost。但是,当 front.localhost 容器尝试访问 sdk.localhost 容器时,它不起作用,因为它将 sdk.localhost 解释为 127.0.0.1 并且永远不会到达其他容器。
有没有办法告诉 docker 容器不要将 *.localhost 解释为 127.0.0.1,而是解释为同一网络中的另一个容器主机名?
我猜这是显而易见的,但我不能使用不同的主机名在内部调用容器,因为 API 调用是从浏览器访问与从后端访问的相同代码。
我尝试了很多东西,例如:别名、外部链接、多个网络,但没有任何效果对我有用。我还尝试使用 Traefik 设置反向代理,但没有帮助。我无法设法让一个容器到达另一个使用 *.locahost 主机名公开的容器。
我意识到这可能不是很清楚,请给我反馈,我会根据需要重写以使其更容易理解。
您可以为 sdk 容器使用网络别名,这样您就可以通过别名来寻址它。
就像这个撰写文件一样,它允许您使用名称
backend.localhost
: 从前端容器寻址后端容器
version: '3'
services:
frontend:
image: debian
command: tail -f /dev/null
backend:
image: debian
command: tail -f /dev/null
networks:
default:
aliases:
- backend.localhost