Docker

docker hub 이미지 자동 빌드하기 - github push

PSAwesome 2021. 1. 10. 00:26
반응형

안녕하세요.

 

github에서 push하면 docker hub에서 이미지 자동으로 빌드하게 만드는 글입니다.

 

자동으로 이미지 빌드하면 뭐가 좋은가?

도커 환경일 경우에 좋습니다!

적어도 한 사이클마다 작업이 줄어들 수 있습니다.

 

not use docker hub

1. aws와 gcp를 같이 배포할 일이 있다고 가정하였습니다.

한 리전에서 여러 인스턴스를 운영하는 상황이어도 위 내용과 같습니다.

 

2. nginx 하나씩 운영한다고 가정하고, 컨테이너를 매우 low하게 사용한다고 가정하였습니다.

 

3. 서버에 접속해서 vim으로 소스코드를 작성하는 상황은 배제하였습니다.

4. 도커를 사용하는 것을 가정하였습니다.

nginx 소스를 cp하는 행위를 포함하는건 너무하니까요.. 물론 jenkins 같은 CI / CD가 기본이라고 생각합니다.

 

이때 작업의 흐름입니다.

  1. 소스코드를 작성하고 github나 형상관리를 통해 소스 업로드
  2. 인스턴스에 접속
  3. git source pull
  4. docker image build
  5. docker run

 

자동 빌드를 한다면

docker hub auto build

 

  1. 소스코드를 형상관리 업로드
    1. docker hub에서 git push trigger를 확인하고 build
  2. 각 인스턴스에 접속
  3. git source pull
  4. docker build
  5. docker run

 

위 흐름으로 인스턴스 당 명령어 두 번씩 줄어들었다고 해석할 수 있습니다.

n 번의 작업이 줄어드는 현상은 엄청 크다고 생각합니다.

 

auto build를 하기 위해 필요한 것

  • docker hub 계정
  • github 계정
  • 배포할 app

 

github file의 구조

github 구조

  • docs: nginx에 배포될 front source
  • Dockerfile: 자동 빌드할 Dockerfile
  • nginx.conf: nginx의 config 파일

 

Dockerfile

더보기

FROM nginx

COPY docs /usr/share/nginx/html/learning-vuejs

COPY nginx.conf /etc/nginx/nginx.conf

 

create repository docker hub 

도커 허브에서 create repository 누르시고

이미지를 생성하면서 build 설정을 할 수 있습니다.

docker auto build 설정

 

  • 현재 글이 github 기준입니다. bitbucket도 github와 크게 다르지 않습니다.
  • github 계정과 연동하시면 github의 repository 정보를 가져올 수 있습니다.
  • 감시할 branch는 master로 설정하였습니다.

 

create & build

최종 결과입니다.

create & build 이후
3분 후

이미지를 생성하면 바로 build를 합니다.

이제 서버에 접근해서 pull / docker run을 실행하면 업데이트된 컨테이너가 실행됩니다!

 

github에서 push하기

master에서 push를 하면 아래와 같이 build가 생성됩니다.

recent build

 

서버에서 실행

현재 GCP에서 띄워서 사용하고 있는 상태라 서버에서 실행한 결과입니다.

GCP 에서 명령어

 

컨테이너가 편해서 데모 서버를 만들어도 이렇게 배포하게 되었습니다.

새해 복 많이 받으시고 즐거운 코딩이 되었으면 좋겠네요!

 

감사합니다.

 

관련글

 

nuxt.js 이미지 빌드하기

2021/01/01 - [Docker] - nuxt.js in Dockerfile to hub.docker

 

learning-vuejs 저장소

https://github.com/wiv33/learning-vuejs

 

aws s3에 이미지 저장

https://github.com/wiv33/aws-s3-file-upload

 

 

반응형