WSL2에서 Docker로 띄운 Nginx 느림 현상 해결 방법

서론

Docker는 다양한 방면에서 사용된다. 각기 다른 언어 혹은 한 언어의 다양한 버전으로 구성된 여러 프로젝트를 빌드하는 데에도 Docker를 이용하여 빌드를 실행할 정도니 활용 방법은 무궁무진하다. 그중에서도 특히 많이 사용하는 방법이 로컬 개발 환경을 Docker를 활용해 구축하는 것이다.

나는 Docker를 사용해서 다양한 환경의 로컬 개발 환경 구성을 진행해왔다. 하지만 그것은 어디까지나 macOS에서 깔끔하게 동작했던 것이고, 협업하는 팀원의 Windows PC에서 동일한 환경을 구성했더니 페이지를 로드하는 데 적게는 5초에서 많게는 10초 이상 걸리는 현상이 발생했다.

도대체 문제가 무엇이었을까?

 

WSL2와 Docker 볼륨 마운트 문제

윈도우에서 터미널 개발환경을 구성할 때 보통 WSL2를 많이 사용한다. MS에서 직접적으로 관리 및 배포하는 만큼 윈도우 환경에서 가장 깔끔하게 리눅스 혹은 우분투 등의 CLI를 활용할 수 있다는 가장 큰 장점이 있기 때문이다.

하지만 WSL2와 윈도우 사이의 파일 시스템 문제로 인해 실질적으로 WSL2에서 docker를 띄워 컨테이너를 사용하면 정말 최악의 상황이라고 해도 과언이 아니라고 한다. 때문에 2일 밤낮으로 삽질한 내용을 기제한다.

WSL2 리눅스 파일시스템을 별도 네트워크로 구성하기

제목만 봐서는 말이 어렵게 느껴지겠지만, 실제로는 엄청 심플하다.

첫 번째로 내 PC 우클릭 > 네트워크 위치 추가를 클릭한다

두 번째로 \\wsl\ 혹은 \\wsl.localhost\를 입력하고 찾아보기를 클릭하여 본인의 wsl2로 설치된 리눅스 혹은 우분투를 찾는다

세 번째로 네트워크 위치를 추가한 다음 /home/user 폴더로 들어가 프로젝트 폴더를 생성 (혹은 git pull 등)한다.

해당 프로젝트 폴더를 터미널로 접속하여 도커를 사용하여 개발환경을 구성하면 로딩 속도가 이전과는 다르게 비약적으로 빨라진 것을 체감할 수 있다.

도커를 사용해서 로컬 환경 구성하는것이 좋은가?

솔직히 잘 모르겠다. 나는 macOS로 개발하는 것을 더 좋아한다. 환경 설정부터 시작해 각 프로젝트에 맞는 언어 및 버전으로 로컬 환경을 구성하기가 너무 편리하기 때문이다. Windows는 많이 사용해보지 않아서 잘 모르겠다. 이제는 회사에서 내부망 구분을 철저하게 하여 ISMS에 철저히 대비해야 하기 때문에 VPN을 더 강화해야 했고, 그에 따라 macOS는 더 이상 사용하지 못 하게 되었다. 앞으로는 Windows 환경에서 많은 개발을 할 예정이다.

더 나은 방법을 찾게 되면 포스팅 하도록 하겠다.