본문 바로가기

Backend/Docker, k8s

docker image에 vscode extension 설치 방법

 

 

Intro

vscode로 container를 열 때 container에서 활용할 vscode extention을 반복적을 설치해야 하는 번거로움이 있던적이 있습니다. 심지어 host에 vscode extension이 있는데도 container에 연결이 잘 안될 때가 있습니다.

install in Container가 뜬다는 것은 이 extension이 제대로 container에서 동작 안되고 있는 것

 

이런 문제가 생기지 않도록 vscode Extensions을 docker image 자체에 포함시킬 수 있습니다. Docker Image에 vscode Extension을 포함시켜버린다면 Extension 연결을 항상 보장합니다. 약간 번거롭지만 한번 해놓으면 편할 것 같아 공유 드립니다.

참고. 이 글에서는 Python Extension만 다뤄봤지만 다른 Extension도 같은 방법으로 Docker Image에 포함시킬 수 있습니다.

 


 

본론

먼저 container에 접속 후 vscode extension 메뉴를 열어줍니다. Python이 제대로 설치되어 있는지 확인해 줍시다.

Disable 버튼이 있다는 것은 설치되었다는 뜻이다.

 

확인이 되었다면 os 내의 vscode extension이 설치된 폴더로 가보겠습니다. 경로는 /root/.vscode-server/extensions 입니다. 저는 python slim image를 Base로 했는데 만약 다른 Base Image를 선택하셨으면 경로는 조금 다를 수 있습니다.

python extension이 가득하다.

 

마침 저는 jupyter는 사용하지 않을 것이기 때문에 jupyter는 제외한 채 ms-python으로 시작하는 폴더 3개만 밖으로 복사하겠습니다.

mkdir -p /code/extensions
cp -r /root/.vscode-server/extensions/ms-python* /code/extensions/

 

 

그러면 이제 extensions 폴더에 python관련 extensions가 옮겨진 것을 확인할 수 있습니다. 저는 volume 옵션 덕분에 container에 있는 파일을 host로 쉽게 빼내올 수 있습니다.

linux container 환경에서 보는 폴더 현황
windows host 환경에서 보는 폴더 현황

 

 

이 extensions를 docker image를 만드는 폴더에 넣어줍시다.

extensions가 infra 폴더에 들어왔다

 

 

이제 이 extensions를 build할 때 COPY해서 들어갈 수 있도록 합시다. backend_base_image.dockerfile에 COPY 명령어를 추가합니다.

## install vscode python extensions
COPY extensions/ /root/.vscode-server/extensions/

 

 

그리고 다시 build한 후 container를 실행시켜 보겠습니다. 그러면 Container 안에 extensions가 제대로 들어와 있는 것을 확인해 볼 수 있습니다.

extensions가 제대로 들어와 있다.

 

 


마치며

이제는 vscode에서 docker container에 접속 했을 때 extension이 연결이 안되어서 반복적으로 설치했던 것을 방지하실 수 있스빈다. 하지만 저는 사실 host환경의 vscode extension을 volume binding해서 사용하는 것도 권장 드립니다. 왜냐하면docker image는 저용량인 것이 여러모로 유리한데 vscode extension은 용량이 대체적으로 큰 편입니다. 참고로 ms-python.isort는 5메가, ms-python.python은 69 MB, ms-python.vscode-pylance는 65 MB 입니다. 용량이 만만치 않으니 image에 정말로 포함할지 고민해보시기 바랍니다.

용량이 상당하다.

 

 

'Backend > Docker, k8s' 카테고리의 다른 글

Windows에서 Docker 설치  (0) 2024.02.11
Docker + Frontend(Nginx, React) + Backend(Nginx, Gunicorn, Django, PostgreSQL)  (7) 2023.06.20
Docker Compose - tutorial  (0) 2023.06.18
Docker - Tutorial  (0) 2023.06.17
k8s - Service  (0) 2023.04.28