나도 필요성을 느끼지 못하고 있었다.
필자는 현재 Springboot 공부를 하고 있다. 개인적으로 만들고 있는 대시보드도 있고, 동아리에서 진행하고 있는 실습과 프로젝트도 있다.
Spring 버전이야 각 프로젝트별로 구분해서 진행할 수 있지만, SQL이 대시보드는 MariaDB을 사용하고, 동아리 실습은 MySQL을 사용하고 있다.
MariaDB가 설치된 환경에서 무작정 MySQL를 설치하니 DB가 꼬였다... 큰 일 치르고 왔다.
ChatGPT에게 이런 경우 어떻게 해야 하는지를 물어보니 Docker를 사용해보라고 한다. 대충 알아보니 가벼운 가상 머신정도인 것 같아 한번 깔아보기로 했다.
Docker는 태생이 리눅스 기반 가상화 솔루션이다.
하지만 이거 하나 때문에 서피스에 리눅스를 설치할 수는 없는 노릇이니 WSL를 이용해보자.
가상화 위에 가상화 이게 추상예술인가 싶다
(WSL2는 이미 설치되어 있다고 가정한다. 나는 WSL2에 ubuntu 22.02를 설치해 둔 상태다.)
Docker Desktop 프로그램 자체는 윈도우에 설치하지만, 실제 컨테이너 실행은 WSL에서 하는 것 같다.
설치한 다음 윈도우를 다시 시작해야 한다.
What's your role? Back-end developer...희망 사항
윈도우에서 docker desktop을 실행하고, 설정-resources-WSL integration 옵션을 활성화하자.
그러면 WSL 배포판에 docker가 자동으로 설치된다.
이제 docker를 사용할 준비가 끝났다.
여기까지 진행하며 알게 된 사실인데, java 빌드 도구인 Gradle에서 Spring 버전뿐만 아니라 java 버전도 선택할 수 있었다. Gradle은 프로젝트 단위로 빌드 옵션을 설정할 수 있으니... MySQL과 MariaDB를 동시 사용해야 하는 경우가 아니라면 프로젝트별 빌드 옵션 변경만으로 목적을 이룰 수 있다!
추가로 MySQL과 MariaDB를 동시 사용하는 경우도 포트 설정 등을 다르게 하면 가능하다고 한다... 심지어 옛날 자료이긴 하지만 공식 가이드도 있었다...
그래도 기왕 깔아본 김에 배포되는 이미지를 올려보는 작업까지 한번 진행해보자. 쉘에서 할 수도 있지만 나는 아직 무섭기 때문에 GUI에서 진행할 것이다.
아까 깔아뒀던 docker desktop을 실행하고, Images-Search images to run 메뉴에서 배포 중인 이미지를 검색해 다운받아볼 수 있다. 필자는 테스트 겸 manjaro linux를 깔아보기로 했다.
run
을 누르면 pull
을 자동으로 진행한 다음 바로 컨테이너를 실행한다.
잘 실행된다.
이렇게 docker로 리눅스 위에 리눅스를 올려 완전히 별개의 개발 환경을 구축할 수 있고, 구축한 환경을 docker 이미지 형태로 배포할 수도 있다.
필자는 결국 MariaDB를 삭제🔥하고 MySQL을 쓰는 극약 처방을 저지르고 말았지만... 언젠가 지금 구축해 둔 docker 환경이 도움이 될 때가 올 것이라 믿는다. 아마?