본문 바로가기

new/new dev

gitlab with docker

gitlab 설치 및 실행

gitlab을 따로 설치하면 DB에 루비에 어려움이 많지만 gitlab docker 이미지를 가져오면 한방에 설치 할 수 있다



간단히 다음 명령어를 실행하면 최신버전의 gitlab이 설치 & 실행 된다.

$sudo docker run --detach \

    --hostname gitlab.example.com \

    --publish 443:443 --publish 80:80 --publish 22:22 \

    --name gitlab \

    --restart always \

    --volume /srv/gitlab/config:/etc/gitlab \

    --volume /srv/gitlab/logs:/var/log/gitlab \

    --volume /srv/gitlab/data:/var/opt/gitlab \

    gitlab/gitlab-ce:latest





기본적으로 사용하는 포트(80, 22)를 변경하고 싶은 경우

gitlab 실행

$ sudo docker run --detach \

    --hostname gitlab.example.com:8929 \

    --publish 8929:8929  --publish 2289:22 \

    --name gitlab \

    --restart always \

    --volume /srv/gitlab/config:/etc/gitlab \

    --volume /srv/gitlab/logs:/var/log/gitlab \

    --volume /srv/gitlab/data:/var/opt/gitlab \

    gitlab/gitlab-ce:latest


다음 명령어로 도커(gitlab) 안으로 접속

$ docker exec -it gitlab /bin/bash


내부에서 설정 파일 변경

gitlab$ vi /etc/gitlab/gitlab.rb


다음과 같이 수정 (주석 풀고 수정)

gitlab_rails['gitlab_shell_ssh_port'] = 2289


gitlab 재설정

gitlab$ gitlab-ctl reconfigure



끝!


엄청 간단하다


더 자세한 내용이나 update되는 내용을 알고 싶다면

https://docs.gitlab.com/omnibus/docker/README.html






git push를 노티 받기

git-hook 변경

gitlab$ vi /var/opt/gitlab/git-data/repositories/group/project.git/hooks


다음과 같이 slack으로 push했다

puts `curl https://hooks.slack.com/services/#######/########/######## -d '{"text": "git push updated\nref_name=#{ref_name}\nold_value=#{old_value}\nnew_value=#{new_value}\nrepo_path=#{repo_path}\nkey_id=#{key_id}"}'`



실제로 다음과 같이 slack에서 확인가능







2017-06-07 추가

trouble shooting

gitlab서버가 변경될경우 (docker가 실행되는 서버)
gitlab에서 사용하는 파일의 권한(사용자)이 변경되기 때문에 다음 명령을 실행해야 한다

$ sudo docker exec gitlab update-permissions
$ sudo docker restart gitlab


그리고 동시에 gitlab의 docker이미지도 update하였기 때문에 git에 clone, push 등이 되지 않는 문제가 발생하여 config 폴더를 reset 하였다.

즉, docker가 실행될때 설정하는 폴더위치(/srv/gitlab/config)를 백업 후 삭제하였다.

당연히 포트관련 설정 등을 다시 해야 한다(/etc/gitlab/gitlab.rb)


$sudo docker run --detach \

    --hostname gitlab.example.com \

    --publish 443:443 --publish 80:80 --publish 22:22 \

    --name gitlab \

    --restart always \

    --volume /srv/gitlab/config:/etc/gitlab \

    --volume /srv/gitlab/logs:/var/log/gitlab \

    --volume /srv/gitlab/data:/var/opt/gitlab \

    gitlab/gitlab-ce:latest 



'new > new dev' 카테고리의 다른 글

c# FileInfo  (0) 2020.01.14
쉴 스크립트 sample  (0) 2020.01.03
docker + redmine, docker + gitlab  (0) 2017.03.20
docker  (0) 2017.03.18
resend 정책 적용 2017.03.03  (0) 2017.03.04