添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
爱听歌的土豆  ·  【WIDE LAB紀錄 Day4】 ...·  1 月前    · 
憨厚的充值卡  ·  9月油车销量Top ...·  4 月前    · 
眼睛小的大白菜  ·  The active manifest ...·  6 月前    · 
谦和的冰棍  ·  教你轻松玩转 Bokeh ...·  7 月前    · 
星星上的钥匙  ·  Troubleshooting for ...·  9 月前    · 

连接到多个容器

目前,您只能在每个 Visual Studio Code 窗口中连接到一个容器。但是,您可以启动多个 VS Code 窗口来 连接到它们

如果您希望使用 devcontainer.json 而不是使用 Docker Compose,那么您可以为源代码树中的每个服务创建单独的 devcontainer.json 文件,每个文件都指向一个共同的 docker-compose.yml

要了解其工作原理,请考虑以下示例源代码树

📁 project-root
    📁 .git
    📁 .devcontainer
      📁 python-container
        📄 devcontainer.json
      📁 node-container
        📄 devcontainer.json
    📁 python-src
        📄 hello.py
    📁 node-src
        📄 hello.js
    📄 docker-compose.yml

.git 文件夹的位置很重要,因为我们需要确保容器可以看到此路径,以便源代码管理正常工作。

接下来,假设根目录中的 docker-compose.yml 如下所示

version: '3'
services:
  python-api:
    image: mcr.microsoft.com/devcontainers/python:1-3.12-bookworm
    volumes:
      # Mount the root folder that contains .git
      - .:/workspace:cached
    command: sleep infinity
    links:
      - node-app
    # ...
  node-app:
    image: mcr.microsoft.com/devcontainers/typescript-node:1-20-bookworm
    volumes:
      # Mount the root folder that contains .git
      - .:/workspace:cached
    command: sleep infinity
    # ...

然后,您可以设置 ./devcontainer/python-container/devcontainer.json 用于 Python 开发,如下所示

"name": "Python Container", "dockerComposeFile": ["../../docker-compose.yml"], "service": "python-api", "shutdownAction": "none", "workspaceFolder": "/workspace/python-src"

接下来,您可以通过更改 workspaceFolder 来设置 ./devcontainer/node-container/devcontainer.json 用于 Node.js 开发。

"name": "Node Container", "dockerComposeFile": ["../../docker-compose.yml"], "service": "node-app", "shutdownAction": "none", "workspaceFolder": "/workspace/node-src"

devcontainer.json 文件中的 "shutdownAction":"none" 是可选的,但它将在 VS Code 关闭时保持容器运行 - 这可以防止您在关闭一个窗口时意外关闭两个容器。

在多个 VS Code 窗口中连接到多个容器

  • 在项目的根目录级别打开一个 VS Code 窗口。
  • 从命令面板 (F1) 运行 Dev Containers: 在容器中重新打开,然后选择 Python Container
  • 然后,VS Code 将启动两个容器,重新加载当前窗口并连接到所选容器。
  • 接下来,使用 文件 > 新建窗口 打开一个新窗口。
  • 在当前窗口中将您的项目打开到根目录级别。
  • 从命令面板 (F1) 运行 Dev Containers: 在容器中重新打开,然后选择 Node Container
  • 当前 VS Code 窗口将重新加载并连接到所选容器。
  • 您现在可以从不同的窗口与两个容器进行交互。

    在一个 VS Code 窗口中连接到多个容器

  • 在项目的根目录级别打开一个 VS Code 窗口。
  • 从命令面板 (F1) 运行 Dev Containers: 在容器中重新打开,然后选择 Python Container
  • 然后,VS Code 将启动两个容器,重新加载当前窗口并连接到所选容器。
  • 从命令面板 (F1) 运行 Dev Containers: 切换容器,然后选择 Node Container
  • 当前 VS Code 窗口将重新加载并连接到所选容器。
  • 您可以使用相同的命令切换回。
  • 连接到两个容器时扩展 Docker Compose 文件

    如果您想 扩展您的 Docker Compose 文件以进行开发,则应使用单个 docker-compose.yml 文件,该文件扩展了 两个 服务(根据需要),并在 两个 devcontainer.json 文件中引用。

    例如,请考虑以下 docker-compose.devcontainer.yml 文件

    version: '3'
    services:
      python-api:
        volumes:
          - ~:~/local-home-folder:cached # Additional bind mount
        # ...
      node-app:
        volumes:
          - ~/some-folder:~/some-folder:cached # Additional bind mount
        # ...
    

    两个 .devcontainer.json 文件将更新如下

    "dockerComposeFile": [
      "../../docker-compose.yml",
      "../../docker-compose.devcontainer.yml",
    

    此 Compose 文件列表在启动容器时使用,因此在每个 devcontainer.json 中引用不同的文件会导致意外结果。