https://spring.io/guides/gs/spring-boot-docker/
Docker를 처음 접해보는 사람들에게 도움을 주는 가이드
이번 가이드의 경우 프로젝트의 코드는 거의 있지도 않으며 별로 중요치도 않으므로 그냥 직접 보고 간단히 따라써보는 것을 추천한다. 중요하다고 할 만한 것은 Dockerfile을 작성해보는 정도? 일 것 같다.
Docker의 개념이 드디어 등장한다. 사실 Docker를 처음 접하는 것은 아니다. 과거 인턴 시절 여러 docker container들을 켜가며 개발을 했던 경험도 있고, docker compose를 작성하는 방법도 가볍게 공부해본 적도 있고(다 까먹긴 했다.. ㅎㅎ) 해서 Docker를 다룰 줄 아냐고 누가 나에게 묻는다면 자신있게 그렇다고는 할 수 없지만, 최소한 충분히 접해봤다 라고는 할 수 있다.
사실 내가 느끼기에 Docker는 처음 접하게 되면 생소한 파일 형식에 지레 겁을 먹곤 하는데 image -> container 의 흐름만 안다면 딱히 쫄 필요는 없을 것 같다. 복잡해 보이는 Dockerfile도 사실 찬찬히 검색해가며 읽어보면 충분히 다 읽히기도 하고 말이다.
그렇기에 이번 가이드에서 나는 오랜만에 Docker에 대한 기초 개념을 살리고 컴퓨터(노트북)에서 Docker desktop이 정상적으로 돌아가게 하는 것에 큰 의의를 두었다. 당신이 아마 mac을 쓰고 있다면, 이 부분에는 크게 걱정할 필요는 없을 것이다.
가상머신과 비슷한 느낌으로 container라는 기술을 이용해 손쉽게 빌드하고 실행할 수 있도록 도와준다. 또한 image라는 개념을 통해 버전화가 쉽고, 항상 동일한 상태로 서버를 만들 수 있다는 큰 장점이 있다. 아직 Docker를 잘 알지는 못하지만 환경에 구애받지 않고 항상 동일할 수 있다는 것이 아마 가장 큰 장점들 중 하나일 것이다.
쉽게 비유를 해보자면, 내가 작성한 코드를 기반으로 완벽한 CD 하나를 만들고, 언제 어디서나 이 CD를 꼽기만 하면 동일한 상태의 서버를 킬 수 있게 해주는 것이다. 근데 이 CD를 공유도 할 수 있고, 어디에 올릴 수도 있고.. 뭐 그런 느낌이다.
나도 자세하게 알고 있다고 말은 못하므로, 더 상세한 내용은 직접 구글링 해보는걸 추천한다.
이는 가이드에는 없던 내용이지만 생각이 나 적어둔다. 기억이 맞다면 docker-compose는 docker를 좀 더 편리하게 사용할 수 있게 해주는 기능이었다. 여러 container들을 세팅해서 한번에 관리하는 것이다. 간단히 DB, 서버, messaging 서버 등등을 담은 각각의 container가 있고, 이를 원하는 순서대로 시작되도록 설정할 수 있는 기능을 의미한다. 아마 궁극적으로는 docker-compose를 공부해야 하지 않을까 생각한다. 이 정도까지 해두고 지금은 지나간다.
Docker는 사실 거의 대부분의 서비스에서 사용하고 있다고 느껴지는(?) 툴이며 꼭 익혀둬야 된다고 생각한다. 아마 향후 프로젝트를 진행해볼 때 Docker를 통해서 구성해볼 예정이니 그 때 다시 접하게 되지 않을까 싶다. 또, Docker 사용을 좀 더 도와주는 Spring 문서가 있는 것 같아 이를 또 알아보겠다!