원격 linux 머신에 visual studio code 의 docker 확장 설치 후 mysql 설치

2022. 12. 24. 15:57카테고리 없음

728x90

환경 구성

  • ubuntu 20.04
  • docker, docker-compose
  • visual studio code

사전 지식

  • docker

들어가기 전

visual studio code의 확장 프로그램 중 마이크로소프트의 도커 관련된 프로그램은 2개를 지원한다.

Docker

  • cli 환경에서 docker 사용했던걸 gui 환경에서 visual studio code를 이용해 사용한다. 

Dev Containers

  • 개발 환경일 경우 docker를 이용해서 환경 구성 했던걸 dev containers를 이용해서 visual studio code로 docker의 볼륨과 매칭되어 사용한다.

전자는 실제 라이브 서비스 등의 환경 구축을 위해 사용할 때 유용하며 후자는 개발 환경에서 여러 개발자가 하나의 머신에서 사용할 때 유용하다.

즉, 볼륨 마운트가 실시간 이기 때문에 코드의 파일을 수정할 경우 즉시 컨테이너 안의 코드 파일도 수정된다.

그렇기 때문에 다시 이미지를 만들고 빌드하는 수고를 하지 않아도 개발이 가능하다.

 

둘 다 컨테이너 안의 실행중인 프로그램에 디버깅 가능하다.

나는 처음에 dev containers라는 기술을 먼저 보고 회사 프로젝트에 적용할 수 있게다라는 생각이 들어 회사 프로젝트를 dev containers 환경으로 변경해서 사용 중이다.

한 달 정도 혼자 써보고 큰 문제가 발생하지 않은다면 주변 동료들도 같이 사용할 생각이다.

그런데 dev containers가 나오기 전에 docker 확장이 먼저 나왔는데 왠지 보고도 사용하지 않고 넘어 갈려니 아쉬움이 남았다.

ms 문서에 있는 내용을 읽어 보니 cli로 docker 사용하는 거와 크게 다른 건 없었다.

https://code.visualstudio.com/docs/containers/overview

 

Docker extension for Visual Studio Code

Tools for developing and debugging with Docker containers, using Visual Studio Code.

code.visualstudio.com

그래도 이 글을 쓰는 이유는 2가지 이유로 쓰게 됐다.

  1. vs code를 이용해서 도커 컨테이너에 디버깅을 하기 위한 방법
  2. 내 개인적인 생각으로 어떤 기술을 배울 때는 최대한 여러 방법으로 배우는 게 좋다고 생각하는데 docker의 경우 cli와 vs code를 사용해 가며 서로 간에 몰랐던 부분을 캐치하거나 장단점등을 생각할 수 있기 때문

그럼 이제 시작하자.


사전에 linux 머신에 docker가 설치되어 있어야 한다.

1. vs code로 원격 linux에 접속 후 확장 프로그램에 docker 입력 후 설치 버튼 클릭

2. 설치하면 왼쪽 메뉴 중에 고래 이모티콘이 추가 돼있는데 누르면 도커와 관련된 내용들이 옆에 나온다

3. Ctrl + Shift + P 키를 누른 후 docker add를 입력하면 나오는 내용 중에 Docker files to workspace... 를 선택한 다음 Other를 선택하고 No를 입력한다.(만약 docker-compose를 사용할 경우 Yes를 입력한다)

4. 두 개의 파일이 생성된 걸 볼 수 있는데 Dockerfile을 연다

5. 내용을 수정 한 다음 저장 한다.

FROM mysql:latest

# Root 패스워드
ENV MYSQL_ROOT_PASSWORD=1
# DB 이름
ENV MYSQL_DATABASE=testDB

6. Ctrl + Shift + P를 입력 후 docker image를 입력 한 다음 Build Image... 를 선택하면 dockerfile에 저장된 latest를 선택

7. 빌드 log가 successfully이면 성공이고 창 왼쪽에 image가 추가 됐다.

8. Ctrl + Shift + P를 입력 후 docker run을 입력 한 다음 아까 빌드한 이미지를 선택한다

8. docker run 실행 후 vs code에도 실행 중인 컨테이너가 생성된다.

9. 실행 중인 컨테이너에 오른쪽 클릭 후 어태치 Attach Shell을 눌러 쉘 접속 후 mysql가 실행 중인지 확인한다

참고로 접속하려면 shell 환경에서 mysql -p를 입력하자.

제대로 따라 했다면 비밀번호는 1일 거다.

이 글은 테스트 편의를 위해서 비밀번호를 1로 했는데 실전에서는 이런 짓을 하진 않을 거라 믿는다(?)


vs code로 my sql 컨테이너 생성 시 삭제될 경우

나는 azure 서비스를 사용하면서 돈을 아끼기 위해 저녁 12시가 되면 가상머신이 종료되게 세팅을 했다.

어느 날 컨테이너 정리도 할 겸 prune로 정리 후 vs code로 my sql 컨테이너 생성을 했다.

가상머신이 종료된 다음날 접속 해보니 컨테이너가 삭제가 되어있다?

이게 어찌 된 일인지 조사해 보니 vs code는 컨테이너 생성 시 --rm 인자를 붙여서 자동으로 컨테이너가 삭제되었다.

docker run --rm -it -p 3306:3306/tcp -p 33060:33060/tcp mysql:latest

실제 서비스라면 식겁할 일이다.. 위에 --rm을 제거하고 실행하면 컨테이너가 정지 상태로 존재한다