1. 개요

<Docker 가상 환경 구축 입문>의 <Chapter 4. Build를 자동화하자>를 읽고 정리한 내용으로,

이번 문서의 내용은 GitHub와 Docker Hub의 연동을 통한 Automated Build에 대한 소개입니다.

 

2. Automated Build 개요

  • Automated Build(자동 빌드)란, 자동으로 이미지 빌드를 실행하는 것
  • GitHub나 Bitbucket 등 소스 코드 호스팅 서비스를 통해 Build Context File*을 관리하며 해당 레포지터리에 변경이 발생하면 자동으로 빌드를 실행
  • 자동으로 빌드를 실행하여, 수동 빌드 작업보다 효율적으로 애플리케이션을 배포/갱신할 수 있음

       *Build Context File: Dockerfile이나 애플리케이션, 라이브러리 등 빌드에 필요한 파일

 

3. Automated Build의 동작 순서

  1. PC 상에서 수정한 애플리케이션 소스 코드를 GitHub 등 레포지터리에 Push
  2. GitHub가 Docker Hub의 서버에 변경을 통지
  3. 통지를 받은 Docker Hub가 GitHub 상의 빌드 컨텍스트를 기반으로 새로운 이미지 빌드를 실행

 

4. Docker Hub에서의 Automated Build 설정

  • Docker Hub에 생성한 레포지터리에서 “Builds” 설정에서 Automation Build 설정 가능
  • GitHub나 Bitbucket 계정과 연결이 안 된 경우, “Builds” -> “Automation Build”에서 계정 연결
  • 계정 연결이 된 경우, “Builds” -> “Configure Automated Builds”에서 설정
  • Dockerfile의 위치가 GitHub 상 레포지터리의 루트 디렉토리가 아닐 경우, Build Context 변경
  • Dockerfile의 파일명이 다른 경우, Dockerfile location의 설정 변경

 

5. Automated Build 실행 예제 - 샘플 이미지를 사용한 Automated Build 예제

  1. GitHub에 레포지터리 생성
  2. 로컬 PC에서 Dockerfile 작성
    - Author에 설정된 이름을 출력하는 정적 페이지 출력하는 sample 이미지 사용
    $ vi Dockerfile
    FROM dockersamples/static-site
    ENV AUTHOR=“[username]”
    
  3. GitHub 레포지터리에 Dockerfile 추가
    $ git add Dockerfile
    $ git commit -m “Add Dockerfile”
    $ git push -u origin master
    
  4. Docker Hub의 해당 레포지터리 Builds 탭에서 자동 빌드 상태 확인
  5. docker run 실행
    $ docker run -itd -p 8080:80 [username]/[repository name]
  6. Localhost:8080 접속하여 이미지 실행 확인