티스토리 뷰

깃허브 페이지 기능을 이용해서 기술 블로그를 만들어 보는 사이드 프로젝트를 진행하고 있었다. 찾아보니 깃허브가 지킬(Jekyll)을 공식적으로 지원한다고해서 지킬 개발 환경을 설치했었다. 이후 맥 운영체제를 카탈리나(Catalina)로 업그레이드를 했고, 뭔가 잘 안되기 시작했다.

 

Gem 을 이용해 설치한 디펜던시들이 하나둘씩 없어졌고, 하나씩 설치하는데 너무 짜증나서 지킬 데몬을 도커 컨테이너로 띄워보기로 했다.

지킬 도커 이미지 만들기

우선 우분투 도커 이미지를 이용해서 실행 환경을 띄우자.

docker run -it --name jekyll_tmp ubuntu

컨테이너에 접속이 된다. 필요한 기본 패키지들을 설치한다.

apt-get update
apt-get install vim ruby-full build-essential zlib1g-dev -y

.bashrc 에 환경변수 세팅을 하고, 적용한다.

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc

source ~/.bashrc

gem을 이용해서 지킬과 번들러를 설치한다.

gem install jekyll bundler

설치가 완료되었으면 지킬이 제대로 설치되었는지 버전을 확인해보자.

jekyll -v

이제 지킬이 설치되었다.

 

지킬 데몬이 사용할 블로그 홈 디렉토리를 만들어준다. 

mkdir -p /root/blog_home

.bashrc에 지킬을 구동시킬 스크립트를 마지막에 추가하자.

echo 'export BLOG_HOME="/root/blog_home"' >> ~/.bashrc
echo '# Start jekyll' >> ~/.bashrc

cd $BLOG_HOME
rm Gemfile.lock
bundle install
bundle exec jekyll serve --host 0.0.0.0 -p 4000

컨테이너를 구동시키면서 '/root/blog_home' 경로로 외부 볼륨을 연결시킬 것이다. 이 경로를 BLOG_HOME 환경변수로 지정을 해놓고, 지킬을 실행 시키게 된다.

 

웹에서 다운로드한 지킬 테마에는 Gemfile.lock 파일이 섞여있는 경우가 있는데, Gemfile.lock 파일에 있는 버전과 컨테이너에 설치된 버전이 맞지 않으면 실행이 안된다. 따라서 컨테이너를 실행시킬 때, Gemfile.lock 파일을 지우고 다시 설치하고, 'bundle exec'을 이용해서 지킬을 실행시키면 된다. (컨테이너를 재실행할 때마다 다시 빌드하는 문제가 있지만 그건 각자 알아서 최적화 하는걸로...)

 

jekyll serve 실행시 --host 옵션으로 0.0.0.0을 입력하고 -p 옵션으로 포트를 4000번으로 열자.

 

이제 컨테이너를 이미지로 커밋해놓으면 지킬 이미지 생성이 완료된다.

docker commit jekyll_tmp ubuntu:jekyll

 

임시로 만들었던 컨테이너를 지운다

docker rm jekyll_tmp

 

지킬 도커 컨테이너 구동

이제 위에서 만든 도커 이미지를 구동시켜보자. 지킬 컨테이너를 구동시킬 때 호스트의 볼륨을 컨테이너에 연결해줘야한다. 기술 블로그의 포스트 작성과 수정은 호스트 운영체제에서 마크다운 에디터를 이용해 진행하고, 작성한 마크다운이 깃허브 페이지에서 어떻게 보일지 확인하기 위해 지킬 컨테이너를 띄우는 식으로 사용하면 된다.

 

도커에서는 -v 옵션을 이용해서 호스트와 컨테이너가 볼륨을 공유할 수 있다. 

 

깃허브 블로그 리파지토리를 호스트 운영체제의 '/Users/user/workspace/blog' 디렉토리에서 작업을 한다고하자. 이 경로를 미리 만들어 둔 컨테이너의 '/root/blog_home' 경로로 연결해주자. -v 옵션을 이용해서 '-v {Host경로}:{컨테이너 경로}' 형태로 명시하면 된다.

docker run -it -v /Users/user/workspace/blog:/root/blog_home -p 4000:4000 --rm --name jekyll ubuntu:jekyll

그 밖에 -p 옵션으로 포트 매핑을 해준다. '-p 4000:4000'을 이용하여 호스트 운영체제의 4000번 포트를 컨테이너의 4000번 포트와 연결시켜준다. 

 

--rm 옵션은 컨테이너의 실행이 종료되면 바로 삭제되도록하는 옵션이다.

 

이제 웹 브라우저에서 http://0.0.0.0:4000 을 입력하면 지킬이 서비스하는 웹 페이지에 접속할 수 있다. (도커를 실행한 터미널 화면에서 지킬의 로그를 확인할 수 있다.)

 

 

지킬 이미지 바로 받기

사실 위에서 만든 도커 이미지는 도커 허브에 공개되어 있다.

docker run --name blog --volume="$PWD:/srv/jekyll" -p 4000:4000 -it jekyll/jekyll jekyll serve

이렇게 실행하면 바로 지킬을 띄울 수 있다. 그냥 지킬만 띄울꺼면 도커 허브에 공개되어 있는 이미지를 쓰면 되고, 뭔가 커스터마이징 하고 싶으면 직접 만들어서 쓰면 된다.

 

댓글
댓글쓰기 폼
공지사항
최근에 달린 댓글
Total
19,204
Today
10
Yesterday
197
링크
«   2020/08   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
글 보관함