Gitlab CI를 사용하여 커밋할때마다 도커 이미지를 빌드해보자.

centos 7 설치

도커 설치

gitlab-runner

커밋이 되면 도커 러너를 실행시키는데 이건 따로 설치후 gitlab 에 등록을 해주면 gitlab이 커밋시 명령어를 보내서 빌드를 해주는 프로그램인다. docker in docker를 사용할수도 있고 그냥 shell로도 빌드할수 있다.

docker in docker는 빌드후 도커 이미지를 지워버리기 때문에 매번 빌드시마다 로컬 캐시를 사용하지 않고 서버에서 이미지를 받아온다. 오래 걸리고 별로 안좋은듯 싶다. docker in docker는 빌드에는 사용하지 말라는 이야기도 있다.

아무튼 나는 gitlab runner 중 shell을 사용한다. 도커 빌드를 하면 로컬 캐시를 사용하여 다음번 빌드가 빠르다.

# gitlab runner 바이너리 다운받는다.
wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

# gitlab runner 실행권한 추가 
chmod +x /usr/local/bin/gitlab-runner

# gitlab runner가 사용할 유저 추가 
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

# shell을 통해서 도커를 빌드할건데 유저에 도커 사용 권한을 추가한다. 
usermod -aG docker gitlab-runner

# gitlab runner 설치
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

# gitlab runner 시작
gitlab-runner start

# gitlab runner를 github에 등록한다.
gitlab-runner register 
> http://gitlab.UR-DOMAIN.com/ \ # gitlab 웹사이트에서 어드민에 가면 알수 있음. 
> XXXXXXX6A4circGrvrR  # gitlab 웹사이트에서 어드민에 가면 알수 있음. 
> shell

등록이 완료되엇고 이제 커밋하면 자동으로 러너가 실행되게 만들어주면된다.

이제 프로젝트 루트에 다음 파일을 만들면 ci가 커밋마다 동작한다.

vi .gitlab-ci.yml

stages:
  - build

variables:
  IMAGE_NAME: registry.UR-Domain.com:5000/UR-IMAGE:$CI_JOB_ID
  
build:
  stage: build
  script:
    - cd ID
    - docker build . -t $IMAGE_NAME
    - docker push $IMAGE_NAME

꼭 도커 레지스트리에 접근이 가능해야한다.

docker login registry.UR-Domain.com:5000

teamsmiley's profile image

teamsmiley

2018-12-24 00:00

Read more posts by this author