가장 빨리 만나는 Docker 8장 - 1.8. 서버에 Git Hook 설정하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

Docker로 애플리케이션 배포하기

이재홍 http://www.pyrasis.com 2014.08.02 ~ 2014.09.20

서버에 Git Hook 설정하기

개발자 PC에서 git push 명령으로 소스를 올렸을 때 Docker 이미지와 컨테이너를 생성하도록 Git Hook을 설정합니다.

그림 8-7 서버에 Git Hook 설정

다음 내용을 서버의 /home/<서버 사용자 계정>/exampleapp/.git/hooks 디렉터리에 post-receive로 저장합니다.

~/exampleapp/.git/hooks/post-receive
#!/bin/bash

APP_NAME=exampleapp
APP_DIR=$HOME/$APP_NAME
REVISION=$(expr substr $(git rev-parse --verify HEAD) 1 7)

GIT_WORK_TREE=$APP_DIR git checkout -f

cd $APP_DIR
docker build --tag $APP_NAME:$REVISION .
docker stop $APP_NAME
docker rm $APP_NAME
docker run -d --name $APP_NAME -p 80:80 $APP_NAME:$REVISION
  • APP_NAME 변수에 현재 애플리케이션의 이름을 설정합니다. 이 이름은 저장소 이름과 같아야 합니다.
  • APP_DIR 변수에 저장소 디렉터리 경로를 설정합니다. 셸에서 HOME 변수에는 사용자 홈 디렉터리 경로(/home/<사용자 계정>)가 들어있습니다.
  • git rev-parse 명령으로 Push된 최신 리비전을 구한 뒤 앞의 7자리만 REVISION 변수에 저장합니다.
  • git checkout -f 명령으로 Push된 소스를 저장소 디렉터리에 받습니다. 반드시 GIT_WORK_TREE 변수를 설정해주어야 합니다.
  • exampleapp 저장소 디렉터리로 이동합니다.
  • docker build 명령으로 이미지를 생성합니다. 이미지 이름은 exampleapp이고 태그에는 방금 구한 Git 리비전을 설정합니다.
  • docker stop, rm 명령으로 현재 실행되고 있는 Docker 컨테이너를 정지한 뒤 삭제합니다.
  • docker run 명령으로 새로 만든 이미지를 컨테이너로 생성하고, -p 옵션으로 80번 포트를 연결하고 외부에 노출합니다. 이미지 이름은 exampleapp이고 태그에는 앞에서 구한 Git 리비전을 설정합니다.

post-receive 파일에 실행 권한을 부여합니다.

~/exampleapp/.git/hooks$ chmod +x post-receive

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2014-11-30