제킬 / 간단하게 jekyll 실행하기
간단 Jekyll Dockerfile 만들기
전체 절차
- 현재 폴더에 Dockerfile 만들기(Docker container 생성 부분 참고)
docker build --tag my-jekyll:1.0.0 .
docker run -p 4000:4000 --name my-jekyll-con -it my-jekyll:1.0.0
- 브라우저에서 http://localhost:4000 에 접속
Docker container 생성
Dockerfile
아래와 같은 Dockerfile 을 만들자. 일단 ruby 2.7.1 을 가지고 시작한다.
FROM ruby:2.7.1-alpine3.11
LABEL maintainer "na <na@nam.io>"
# RUN apk --no-cache add \
# bash \
ENV BLOG_NAME=my-test-blog
ENV BUNDLE_HOME=/usr/local/bundle
# gcc, g++ and make
RUN apk --no-cache add build-base
# install jekyll and bundler
RUN gem install jekyll bundler
RUN addgroup -Sg 1000 jekyll
RUN adduser -Su 1000 -G jekyll jekyll
RUN chown -R jekyll:jekyll $BUNDLE_HOME
USER jekyll
WORKDIR /home/jekyll/
RUN jekyll new $BLOG_NAME
WORKDIR /home/jekyll/$BLOG_NAME
COPY --chown=jekyll:jekyll _config.yml Gemfile ./
RUN bundle
EXPOSE 4000
ENTRYPOINT ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0"]
build image
아래 command 를 실행해서 image 를 생성하자. 이름을 꼭 넣자. 그렇지 않으면 기본 <none>
으로 잡히는데, 이것이 이전에 혹시 <none>
으로 만들어진 것 있는 경우 overwrite 해 버릴 수 있다.
docker build --tag my-jekyll:1.0.0 .
docker images
를 하면 만들어진 image 가 보인다.
D:\a\prog\ruby\jekyll\docker>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-jekyll 1.0.0 b63aeafaa5b8 14 months ago 51.5MB
container 생성 및 실행
아래처럼 image 를 실행해 보자. 주의할점은 tag 명이 있는 경우 tag(1.0.0) 까지 같이 넣어줘야 한다. my-jekyll-con
은 container name 이다.
docker run -p 4000:4000 --name my-jekyll-con1 my-jekyll:1.0.0
만약 shell 을 통해 확인하고 싶다면 아래처럼 하면 된다.
docker run --name my-jekyll-con -it my-jekyll:1.0.0 sh
현재 container 가 실행되고 있다면 exec
를 사용하자.
docker exec -it my-jekyll-con sh
Dockerfile 설명
jekyll 설치
아래 링크에서 jekyll 의 설치방법을 확인할 수 있다.
아래 command 가 jekyll 에 필요한 package를 설치해 준다.
# gcc, g++ and make
RUN apk --no-cache add build-base
# install jekyll and bundler
RUN gem install jekyll bundler
jekyll user 생성
user id jekyll
로 실행을 하려 한다. 그래서 user, usergroup 을 만들었다.
RUN addgroup -Sg 1000 jekyll
RUN adduser -Su 1000 -G jekyll jekyll
blog 설치
아래처럼 jekyll project 를 하나 생성한다.
RUN chown -R jekyll:jekyll $BUNDLE_HOME
USER jekyll
WORKDIR /home/jekyll/
RUN jekyll new $BLOG_NAME
jekyll 실행, docker run
아래 command 가 docker run 을 통해 jekyll server 를 실행할 수 있게 만들어준다. --host 0.0.0.0 을 넣어주자. 그렇지 않으면 외부에서 접속할 수 없다.
WORKDIR /home/jekyll/$BLOG_NAME
EXPOSE 4000
ENTRYPOINT ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0"]
docker 에서 blog file 가져오기
아래처럼 docker cp
를 사용하면 된다.
docker cp <container_id>:/home/jekyll/my-test-blog .
volume 사용하기
아래처럼 host 의 directory 를 mount 할 수 있다. 추후에 작업을 할 때는 저렇게 하는 것이 편할 것이다.
docker run --rm -v d:\a\prog\ruby\jekyll\docker\my-test-blog:/home/jekyll/my-test-blog2 -p 4000:4000 --name c1v1 t1:v1
docker compose
아래 같은 docker compose.yml 을 만들어 놓으면 편하게 사용할 수 있다.
docker compose up
으로 실행할 수 있다.
version: '3.8'
services:
jekyll:
build: .
image: my-jekyll:1.0.0
volumes:
- d:\a\prog\ruby\jekyll\docker\my-test-blog\:/home/jekyll/my-test-blog2
ports:
- "8000:8000"
Reference
- 쿠…sal: [컴] docker commands
- permissions - What is a “system” group, as opposed to a normal group? - Ask Ubuntu : system group 관련 설명
- https://github.com/envygeeks/jekyll-docker/blob/e2b3cc2f9d4ff239b3db1244400859a81f19a263/repos/jekyll/Dockerfile
댓글 없음:
댓글 쓰기