저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
Docker로 애플리케이션 배포하기
이재홍 http://www.pyrasis.com 2014.08.02 ~ 2014.09.20
서버에 Git Hook 설정하기
개발자 PC에서 git push
명령으로 소스를 올렸을 때 Docker 이미지와 컨테이너를 생성하도록 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 공유는 허용합니다.