在构建像 Next/Nuxt 这样的复杂应用程序时,有没有办法使用 *.localhost 作为 docker 的主机名

问题描述 投票:0回答:1

所以我尝试使用 *.localhost 格式(例如 front.localhostsdk.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 主机名公开的容器。

我意识到这可能不是很清楚,请给我反馈,我会根据需要重写以使其更容易理解。

docker next.js docker-compose nuxt.js
1个回答
0
投票

您可以为 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
© www.soinside.com 2019 - 2024. All rights reserved.