TigerVNC 소스 기반 컨테이너 개발 환경 구축: VSCode와 Docker 통합 가이드

2024년 기준으로 TigerVNC는 고성능 원격 데스크톱 접근을 위한 핵심 오픈소스 프로젝트 중 하나입니다. 이 문서는 Visual Studio Code와 Docker를 활용해 일관성 있는 컨테이너 기반 개발 환경을 구성하는 방법을 설명합니다. 이를 통해 코드 기여, 디버깅, 컴파일 테스트까지 안정적으로 수행할 수 있습니다.

필수 도구 설치

시작 전 다음 도구들이 시스템에 설치되어 있어야 합니다:

  • Docker 엔진 (버전 20.10 이상)
  • Visual Studio Code
  • Git

Linux 사용자는 apt 또는 dnf를 통해 설치 가능하며, Windows 및 macOS 사용자는 각 공식 웹사이트에서 설치 프로그램을 다운로드할 수 있습니다.

소스 코드 복제

먼저 Git을 사용해 미러 저장소에서 소스를 클론합니다:

git clone https://gitcode.com/gh_mirrors/ti/tigervnc
cd tigervnc

Docker 기반 빌드 환경 설정

프로젝트 내 .github/containers 경로에는 여러 리눅스 배포판용 Dockerfile이 포함되어 있습니다. 예를 들어 Rocky Linux 10 기반 빌드는 다음 스크립트를 사용합니다:

.github/containers/rocky10/build.sh

이 스크립트는 자동으로 패키지 의존성 해결부터 RPM 패키지 생성까지 처리합니다.

VSCode를 통한 컨테이너 개발 환경 구성

추천 확장 프로그램 설치

VSCode에서 다음 확장을 설치하여 C++ 및 컨테이너 개발을 지원하세요:

  • Docker
  • C/C++
  • CMake Tools
  • Remote - Containers

.devcontainer 구성

프로젝트 루트에 .devcontainer/devcontainer.json 파일을 생성하고 아래 내용을 추가합니다:

{
  "name": "TigerVNC Dev Container",
  "build": {
    "context": "..",
    "dockerfile": "../.github/containers/rocky10/Dockerfile"
  },
  "extensions": [
    "ms-vscode.cpptools",
    "ms-vscode.cmake-tools"
  ],
  "settings": {
    "cmake.configureOnOpen": true
  }
}

이후 VSCode 명령 팔레트(F1)에서 Remote-Containers: Reopen in Container을 선택하면 컨테이너 내부에서 바로 작업이 시작됩니다.

빌드 및 컴파일 절차

컨테이너가 준비되면 아래 명령어로 빌드를 진행합니다:

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Debug \
      -DENABLE_NLS=ON \
      -DENABLE_H264=ON \
      -DENABLE_GNUTLS=ON \
      -S ..
make -j$(nproc)

이 설정은 GitHub Actions CI 파이프라인과 동일한 조건을 반영하며, 자세한 옵션은 .github/workflows/build.yml에서 확인할 수 있습니다.

실행 및 기능 검증

빌드 완료 후 뷰어를 실행하여 정상 동작 여부를 확인합니다:

./vncviewer/vncviewer

macOS나 Windows에서도 클라이언트 연결 테스트를 병행할 수 있으며, 크로스 플랫폼 호환성을 검사할 수 있습니다.

주요 디렉터리 구조

TigerVNC의 주요 구성 요소는 다음과 같습니다:

  • vncviewer/: VNC 클라이언트 로직
  • unix/: 리눅스/유닉스 서버 구현
  • win/: 윈도우 전용 코드
  • common/: 공통 모듈 및 네트워크 프로토콜
  • cmake/: 빌드 스크립트 및 매크로
  • tests/: 단위 및 성능 테스트 케이스

문제 해결 팁

의존성 오류

패키지 설치 실패 시, CI 워크플로우 파일에서 실제 사용된 apt install 또는 dnf install 명령어를 참조하여 수동 설치를 시도하세요.

Docker 그룹 권한 문제

리눅스에서 sudo 없이 도커를 사용하려면:

sudo usermod -aG docker $USER

명령 후 로그아웃 후 재접속이 필요합니다.

빌드 속도 최적화

-j$(nproc) 플래그로 멀티코어를 활용해 컴파일 시간을 단축할 수 있습니다.

마무리

이제 독립적이고 재현 가능한 개발 환경이 준비되었습니다. 컨테이너를 사용함으로써 호스트 시스템에 영향을 주지 않으면서도 안정적인 개발이 가능합니다. 추가 정보는 프로젝트 루트의 BUILDING.txt 문서를 참고하시기 바랍니다.

태그: TigerVNC docker vscode C++ Remote-Containers

6월 1일 19:56에 게시됨