Linux

Docker로 gitlab 설치

스마트큐브 2018. 5. 10. 19:29

회사의 중요한 자산인 소스를 완전 관리형의 편의로 외부에 두는건 좀 불안해서
gitlab 택했다.  과거에는 이거 설치하다 완전 날새기 일쑤 였는데 요즘 Docker 가 다 해결해 주니 참 편리한 세상이다. ^^; 


난 docker-compose 를 활용해서 설치할 것이다. 


공식문서 : https://docs.gitlab.com/omnibus/docker/  
 

글 중간쯤에 이렇게 친절하게 설명하고 있다. 


자 이제 본격적으로 설치해보자 

OS :  AWS CentOS 

CPU : 2 

RAM : 4GB  (가급적 8G , 4G 인경우 hang 이 걸리는 상황 발생)


일단 도커가 필요하다.! 

AWS AMI 는 기본적으로 Docker 를 설치할수 있게 repository 를 연결하고 있다. 

모두 root 계정으로 실행 

 EC2 생성 직후라면  원할한 진행을 위해 업그레이드를 하자 , 아니면 skip 

# yum -y upgrade  

도커설치 

# yum -y install docker


AWS 사용중이라면 이렇게 ec2-user 도커 실행 권한을 부여해 놓자. 

#  usermod -aG docker ec2-user


도커 서비스 시작 

# service docker start

# systemctl enable docker : 자동실행 설정 


//쉘 닫고 ec2-user 새로운 티미널 열고 확인 

#> docker --version





도커 컴포저 설치 

공식문서 링크 


* 2019-04월 기준 (버전은 계속 변경될수 있다. 위에 링크 확인 필요! .)

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# sudo chmod +x /usr/local/bin/docker-compose

설치가 완료되면 정상작동하는지 버전 확인해보자 

# docker-compose --version


docker 컴포저를 이용하여 설치하기 위한  yml 파일 작성

도커이미지 링크 

docker-compose.yml을 다운 받거나 아래처럼 vi 로 편집해서 사용해도 된다. 

URL 은 임의로  gitlab.my.com  으로 가정한다

vi docker-compose.yml


web:
  container_name : gitlab
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'gitlab.my.com'    
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'http://gitlab.my.com'    
  ports:
    - '80:80'
    - '443:443'
    - '1022:22'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'



난 위 처럼 말고 별도 파티션(/data)으로 분리해서 사용한다.


hosts 등록이 필요한 경우 
 extra_hosts:
      - "gitlab.my.com:172.31.21.93"  이런식으로 ..



22번은 이미 ssh 로 사용중이니 1022 맵핑 

그리고 docker-compose.yml 파일이 있는 경로에서 실행 

docker-compose up -d


이렇게 하면 대략  초기 3분 정도 시간이 필요한데 진행상황을 보고 싶은경우에는 

# docker ps  명령을 통해 컨테이너명을 확인하고 

# docker logs -f <컨테이너명> 

위와 같이 실행면 로그 파일 확인이 가능하다. 



실제 웹사이트 접속!  http://서버 ip  or 도메인 

아래와 같이나오면 설공 

위 화면이 root 비번 변경하는 화면 





메일 설정 

docker exec -it  root_web_1 /bin/bash

위 명령어로 docker 콘솔 접속 

vi /etc/gitlab/gitlab.rb 

로 해당설정 오픈해서 GMAIL 설정 

상세 설정 내용은

https://docs.gitlab.com/omnibus/docker/README.html#install-gitlab-using-docker-compose

여기에서 

https://docs.gitlab.com/omnibus/settings/smtp.html

이쪽 내용에서 확인 가능 

변경내용을 적용하기 위해 아래 명령어 사용 

해당 명령어는 여전히 도커 내부 bash 임 

gitlab-ctl reconfigure


이렇게 하면 설치끝! 



서버 이관 하기 


1. gitlab 버전 확인 
: help 클릭 


2. 동일한 버전으로 신규 서버에 설치 

즉 난 10.7.3 버전이니까 도커허브에서 버전확인하고  compose 파일 아래 처럼 수정해서 기동

web:
  image: 'gitlab/gitlab-ce:10.7.3-ce.0'
~~ 생략 ~~ 


3. 백업 

공식 문서 Link

 1)  우선 old gitlab 서버에서 gitlab-rake 명령을 통해 백업 실행 !
  docker exec -it root_web_1 gitlab-rake gitlab:backup:create

그럼 이렇게 진행되고 tar 파일이 생성됨 

2) 1557812389_2019_05_14_10.7.3_gitlab_backup.tar 파일을 이제 호스트로 복사 

3) 일단 실제 파일 생성됐는지  경로 확인

# docker exec -it root_web_1 /bin/bash

# cd  /var/opt/gitlab/backups

확인됐으면 호스트쪽으로 복사 

# docker cp root_web_1:/var/opt/gitlab/backups/1557812389_2019_05_14_10.7.3_gitlab_backup.tar ./


* 참고! 
이미 볼륨마운트를 한 상황이라 위처럼 안해도 됨! 이미 호스트 파일 시스템에 파일이 존재한다! 

cd /srv/gitlab/data/backups

여기서 그냥 복사해오면됨 


4. tar 파일을 이제 신규 서버로 이동
: sftp 활용해서 


신규 서버의 cd /srv/gitlab/data/backups 에 tar 파일을 옮겨 놓는다 


그리고 신규서버 docker 쉘에 접속해서 아래 명령어를 실행한다 
# docker exec -it root_web_1 /bin/bash

그럼 먼가 메시지가 많이 나오면 한참 진행된다. 

gitlab-ctl reconfigure
gitlab-ctl start
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl status

그리고 이게 끝나면  호스트 쪽에서 

# docker exec -it root_web_1 gitlab-rake gitlab:backup:restore --trace
위 명령어로 복구 시작 진행 ! 

중간에 계속하겠냐고 묻고 yes  라고 하면 한참 진행된다. 


끝나면 다시 도커 쉘 접근해서 
# docker exec -it root_web_1 /bin/bash

# gitlab-ctl restart

이렇게 하면 끝! 


참고 문서