이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

여러 컨테이너에 연결

현재 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이 다음과 같다고 가정해 보겠습니다.

services:
  python-api:
    image: mcr.microsoft.com/devcontainers/python:1-3.12-bookworm
    volumes:
      # Mount the root folder that contains .git
      - .:/workspace
    command: sleep infinity
    # ...

  node-app:
    image: mcr.microsoft.com/devcontainers/typescript-node:1-20-bookworm
    volumes:
      # Mount the root folder that contains .git
      - .:/workspace
    command: sleep infinity
    # ...

그런 다음 Python 개발을 위해 ./devcontainer/python-container/devcontainer.json을 다음과 같이 설정할 수 있습니다.

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

다음으로, workspaceFolder를 변경하여 Node.js 개발을 위해 ./devcontainer/node-container/devcontainer.json을 설정할 수 있습니다.

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

devcontainer.json 파일의 "shutdownAction": "none"은 선택 사항이지만, VS Code가 닫힐 때 컨테이너를 계속 실행 상태로 유지합니다. 이렇게 하면 한 창을 닫아도 두 컨테이너가 실수로 종료되는 것을 방지할 수 있습니다.

여러 VS Code 창에서 여러 컨테이너에 연결

  1. 프로젝트의 루트 레벨에서 VS Code 창을 엽니다.
  2. 명령 팔레트(F1)에서 Dev Containers: Reopen in Container를 실행하고 Python Container를 선택합니다.
  3. 그러면 VS Code가 두 컨테이너를 모두 시작하고 현재 창을 다시 로드한 후 선택한 컨테이너에 연결됩니다.
  4. 다음으로, 파일 > 새 창을 사용하여 새 창을 엽니다.
  5. 현재 창에서 루트 레벨의 프로젝트를 엽니다.
  6. 명령 팔레트(F1)에서 Dev Containers: Reopen in Container를 실행하고 Node Container를 선택합니다.
  7. 현재 VS Code 창이 다시 로드되고 선택한 컨테이너에 연결됩니다.

이제 별도의 창에서 두 컨테이너와 모두 상호 작용할 수 있습니다.

단일 VS Code 창에서 여러 컨테이너에 연결

  1. 프로젝트의 루트 레벨에서 VS Code 창을 엽니다.
  2. 명령 팔레트(F1)에서 Dev Containers: Reopen in Container를 실행하고 Python Container를 선택합니다.
  3. 그러면 VS Code가 두 컨테이너를 모두 시작하고 현재 창을 다시 로드한 후 선택한 컨테이너에 연결됩니다.
  4. 명령 팔레트(F1)에서 Dev Containers: Switch Container를 실행하고 Node Container를 선택합니다.
  5. 현재 VS Code 창이 다시 로드되고 선택한 컨테이너에 연결됩니다.
  6. 동일한 명령으로 다시 전환할 수 있습니다.

두 개의 컨테이너에 연결할 때 Docker Compose 파일 확장

개발을 위해 Docker Compose 파일을 확장하려는 경우, 두 서비스 모두를 (필요에 따라) 확장하는 단일 docker-compose.yml을 사용하고 이 파일을 두 devcontainer.json 파일 모두에서 참조해야 합니다.

예를 들어, 이 docker-compose.devcontainer.yml 파일을 고려해 보겠습니다.

services:
  python-api:
    volumes:
      - ~:~/local-home-folder # Additional bind mount
    # ...

  node-app:
    volumes:
      - ~/some-folder:~/some-folder # Additional bind mount
    # ...

.devcontainer.json 파일은 다음과 같이 업데이트됩니다.

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

이 Compose 파일 목록은 컨테이너를 시작할 때 사용되므로 각 devcontainer.json에서 다른 파일을 참조하면 예상치 못한 결과가 발생할 수 있습니다.

© . This site is unofficial and not affiliated with Microsoft.