원본: https://www.lesstif.com/gitbook/install-gitlab-using-docker-100205406.html

gitlab 은 Ruby on rails 로 개발되었는데 직접 설치해서 사용하려면 절차가 매우 번거롭습니다. 제조사에서 docker 로 패키징한 버전을 제공하므로 직접 설치보다는 docker 로 설치하는 방법을 권장합니다.

구성

gitlab 에서 배포하는 docker 이미지는 기본적으로 Web 과 WAS 가 모두 포함되어 있고 Host 의 80, 443 포트를 container 로 매핑하게 되어 있습니다.

host 에서 gitlab 만 쓴다면 상관이 없겠지만 그렇지 않다면 다른 서비스를 사용할 수 없으므로 기본 구성대신 아래와 같이 host 에 nginx 를 설치하고 Gitlab docker 는 reverse proxy 로 연결할 것입니다.

Application 관점에서 구성도는 다음과 같으며 Reverse Proxy 로 구성했으므로 Host 에 Container 와 Standalone 서비스를 같이 구동하고 가상 호스트를 부여해서 필요시 동시에 서비스 할 수 있습니다.

사전 작업

먼저 docker 엔진을 설치합니다.

sudo apt install docker

RHEL/CentOS 는 다음 명령어로 설치합니다.

sudo yum install docker

reverse proxy 로 사용할 nginx 를 설치합니다.

sudo yum install nginxsudo apt install nginx

gitlab 에 대한 가상 호스트 설정을 추가하고 재구동합니다.

nginx 가상 호스트 설정 (github.com)

서비스를 활성화하고 재구동합니다.

sudo systemctl enable nginx
sudo systemctl restart nginx

gitlab 설치

먼저 docker volume 으로 사용할 폴더 경로를 정의합니다. 저는 /var 폴더에 docker 볼륨을 매핑해서 사용하므로 아래 경로를 생성합니다.

sudo mkdir -p /var/gitlab/{data,logs,config}

docker 를 실행하는 계정(아마 root 겠죠.)의 초기화 파일(Ex: .bash_profile)에 다음 내용을 넣어줍니다. podman 을 사용한다면 root 가 아닌 실행 계정의 초기화 파일에 넣어줍니다.

export GITLAB_HOME=/var/gitlab

container 실행

gitlab community edition 을 설치 & 실행합니다. 환경에 따라 다음 항목들은 수정해야 할수 있습니다.

sudo docker run --detach \
--hostname gitlab.example.com \
--publish 9080:80 --publish 10022:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
  • — hostname: gitlab.example.com 대신 실제 사용하는 도메인으로 변경해 줍니다.
  • — publish 9080:80: gitlab 웹 서비스를 Host의 9080 포트와 container 의 80 포트와 매핑해 줍니다.
  • — publish 12022:22: gitlab 은 SSH 도 지원하므로 외부에 노출할 SSH 포트(12022)와 container 에 매핑할 포트(22) 를 기술합니다. HOST 의 22 번 포트보다는 별도 포트를 사용하는 것을 권장합니다.

Enterprise Edition 을 사용할 경우 마지막 줄의 gitlab-ce 를 gitlab-ee 로 변경하면 됩니다.

SELinux 설정

SELinux 를 사용한다면 volume 폴더를 docker 가 쓸 수 있도록 적절한 context 인 container_file_t를 지정해야 합니다.

sudo semanage fcontext -a  -t container_file_t '/var/gitlab(/.*)?'

그리고 restorecon 으로 context 를 재설정해 줍니다.

sudo restorecon -R /var/gitlab/

이제 docker 실행시 volume 에 SELinux context 를 반영하도록 :Z 를 추가해 줍니다.

sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 9080:80 --publish 10022:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab:Z \
--volume $GITLAB_HOME/logs:/var/log/gitlab:Z \
--volume $GITLAB_HOME/data:/var/opt/gitlab:Z \
gitlab/gitlab-ce:latest

확인

제대로 구동되고 있는지 docker 의 로그를 확인합니다.

sudo docker logs -f gitlab

구동이 끝났으면 브라우저로 gitlab.example.com 에 연결하면 비밀번호 입력창이 뜹니다.

비밀 번호를 입력난 후에 기본 관리자 id 인 root 와 생성한 비밀 번호를 입력하고 로그인하면 됩니다.

같이 보기

Ref

--

--