有没有办法让 VSCode 中的两个容器从不同的项目进行通信?

Spa*_*y74 5 networking containers docker visual-studio-code

我在 VSCode 中创建了两个不同的 Node.JS 项目。有时,项目 A 需要调用项目 B。项目 A 正在端口 60100 上运行。项目 B 正在端口 60200 上运行。当我尝试使用 http://localhost:60200/ 调用项目 B 时,我得到一个传输错误。如果我在两个容器配置 (devcontainer.json) 上公开端口 60200,它将引发错误,因为该端口已在使用中。

我知道我可以使用 docker-compose 并在同一个项目中运行它们,但它们有单独的 git home 并且大多数时候都是独立的。

我能做些什么来让它们连接起来吗?也许对每个单独的容器使用 docker-compose,但在组合中使用相同的网络名称?这能让他们交流吗?

Mar*_*one 5

这就是我所做的(虽然我用它来让我的 devcontainer 加入 docker-compose 网络,但应该应用相同的原则)...

在我的 devcontainer.json 中...

    "initializeCommand": "docker network inspect my_shared_network > /dev/null || docker network create my_shared_network --attachable",

    "runArgs": [
        "--network=my_shared_network",
    ],
Run Code Online (Sandbox Code Playgroud)

这将创建一个命名网络(如果尚不存在),并指示 VSCode 将其用于 devcontainer。

例如,您可能需要添加"--hostname=devcontainer-project-b"到 runArgs 中,以便可以在 URL 中使用该名称。