위 명령어는 로컬에서 컨테이너를 실행하여, 내부에서 Quartz 빌드를 수행한 뒤 바로 웹호스팅까지 할 수 있도록 구성되어 있다.
실행 후에는 브라우저에서 localhost:8080으로 접속하면 컨테이너 내부에서 빌드된 블로그 사이트를 확인할 수 있다.
각 옵션의 의미는 다음과 같다.
--rm : 컨테이너 실행이 종료되면(예: ctrl+c로 중단) 컨테이너 자체를 자동으로 삭제한다.
-it : 컨테이너 내부에 인터랙티브한 터미널을 띄워서, 실시간으로 명령을 입력하거나 로그를 볼 수 있게 한다.
-p 8080:8080 : 로컬 머신의 8080 포트와 컨테이너의 8080 포트를 연결하여, 외부에서 웹사이트에 접속할 수 있게 한다.
-p 3001:3001 : 개발용 핫리로드(Hot Reload)1 등 추가 개발 포트도 동일하게 연결한다. (보통 8080만 접속하면 됨)
-v ./content:/usr/src/app/content : 로컬의 ./content 폴더를 컨테이너 내부의 /usr/src/app/content에 마운트하여, 블로그 글이나 정적 파일을 실시간으로 반영할 수 있다.
$(docker build -q .) : 현재 디렉터리의 Dockerfile(아래 참고)을 빌드해서 생성된 이미지 ID를 사용하여 컨테이너를 실행한다.
(-q 옵션으로 이미지 ID만 출력받아 바로 사용)
이처럼 Docker를 활용하면 로컬 환경에 Node.js 등 별도의 개발 도구를 설치하지 않아도 바로 Quartz 블로그를 빌드하고 웹서버로 띄울 수 있다.
또한, 로컬의 파일을 컨테이너에 마운트하면 content/ 폴더의 수정 사항도 즉시 반영되어, 글을 올리기 전 미리 결과를 확인하기에 매우 편리하다.
물론 이 방법을 쓰려면 Docker Desktop과 같은 도커 실행 환경이 필요하다. 하지만 한 번만 설치해두면,
Node.js, npm 등 각종 버전 문제에 신경 쓸 필요 없이
어떤 운영체제에서도 똑같이 Quartz 환경을 재현할 수 있고
향후 배포/운영 환경(클라우드, 서버 등)으로 확장할 때도 거의 동일한 방식으로 그대로 사용할 수 있다는 큰 장점이 있다.