Docker와 개발 환경 표준화

pxd의 UX Engineer 그룹은 pxd 홈페이지의 웹 접근성 인증 마크 획득을 위한 리뉴얼 작업을 진행하며, 그룹원 전체가 동일한 개발 환경에서 작업할 수 있도록 Docker를 도입했다. Docker는 코드·런타임·시스템 도구·라이브러리 등 실행에 필요한 모든 것을 하나의 완전한 파일 시스템(컨테이너)으로 감싸 실행 환경에 관계없이 언제나 동일하게 동작하도록 보증하는 기술이다.

도입 배경은 팀의 node 버전 파편화 문제였다. 그룹원들은 각자 참여 중인 프로젝트에 맞춰 node 12, node 14 등 서로 다른 버전의 개발 환경을 갖추고 있었는데, 리뉴얼 대상인 pxd 홈페이지는 Nuxt 기반으로 특정 node 버전을 요구했다. node 버전이 다르면 npm 버전도 달라지고, 이는 패키지 설치 오류나 `package-lock.json` 불일치 문제로 이어질 수 있다. nvm으로 node 버전을 전환하며 관리하는 방식은 프로젝트 수가 10~20개로 늘어나면 그만큼의 node 버전을 개인이 직접 관리해야 해 한계에 부딪힌다. Docker는 필요할 때 설치하고 당분간 쓰지 않으면 삭제했다가 다시 필요할 때 재설치할 수 있어 nvm보다 유연한 대안이 됐다.

도입 과정에서 두 가지 어려움을 겪었다. 첫째, Windows 환경 구성이다. Windows에서 Docker 성능을 향상하고 Mac 사용자와의 충돌 없이 사용하려면 WSL2(Windows Subsystem for Linux 2) 설치가 필수인데, 이는 Docker 학습 이전에 WSL2라는 개념을 먼저 이해해야 하는 추가 진입 장벽이었다. 둘째, VS Code Dev Container의 Windows 성능 저하다. VS Code와 Docker를 결합해 확장 프로그램 설정까지 포함한 개발 환경 전체를 컨테이너화하는 dev-container 방식을 시도했으나, Windows 환경에서 심각한 성능 저하(컴퓨터 멈춤 수준)로 실제 적용에는 이르지 못했다.

결론적으로 Docker 도입은 다양한 node 환경을 오가야 하는 에이전시 조직의 특성에 유연하게 대응하는 수단이 됐다. 팀의 장비가 Windows에서 Mac으로 전환되는 흐름과 맞물려, Mac 사용자와 Windows 사용자가 혼재해 사전 환경 구성에 품이 들던 상황도 점차 해소될 것으로 전망했다.

핵심 내용

  • Docker: 코드·런타임·라이브러리를 하나의 파일 시스템으로 감싸 실행 환경 무관하게 동일한 동작을 보증
  • 도입 이유: 그룹원마다 다른 node 버전(12, 14 등)과 Nuxt가 요구하는 특정 버전 간 불일치 해소
  • node/npm 버전 불일치는 패키지 설치 오류, `package-lock.json` 문제로 이어질 수 있음
  • nvm은 개인 단위 버전 전환 도구라 프로젝트 수가 늘어나면 관리 한계에 부딪힘 — Docker는 필요 시 설치/삭제가 자유로워 더 유연
  • Windows에서는 WSL2 설치가 Docker 사용의 전제 조건이자 진입 장벽
  • VS Code Dev Container는 Windows 환경에서 심각한 성능 저하로 실제 적용은 보류

관련 개념

출처

최종 업데이트: 2026-08-03 | 출처 1개