[Docker] GitLab 설치 및 접속하기

배현호·2021년 8월 20일
2
post-custom-banner


어쩌다 보니 GitLab을 도커로 돌려야 하는 상황이 발생하게 되었다.
그래서 이참에 공부할 겸 필자가 진행했던 방법에 대해서 정리한다.

GitLab 이미지 내려받기

맨 처음으로 docker hub에 있는 이미지들 중에 gitlab 이미지가 있는지 확인하기 위해서 search 명령어를 사용한다.

docker search [찾고자 하는 이미지 이름]

찾고자 하는 이미지 이름 부분에 gitlab을 넣고 엔터를 치면 docker hub에 존재하는 gitlab 이미지들을 보여준다.

gitlab/gitlab-ce                             GitLab Community Edition docker image based …   3372                 [OK]
sameersbn/gitlab                             Dockerfile to build a GitLab image for the D…   1172                 [OK]
gitlab/gitlab-runner                         GitLab CI Multi Runner used to fetch and run…   729                  [OK]
gitlab/gitlab-ee                             GitLab Enterprise Edition docker image based…   272
twang2218/gitlab-ce-zh                       汉化的 GitLab 社区版 Docker Image                     246                  [OK]
...

위에 나오는 것들이 모두 docker hub에 존재하는 gitlab 이미지들이다.
필자는 이중에서 gitlab-ce 이미지를 내려 받기로 결정하였다.

docker pull gitlab/gitlab-ce

GitLab 이미지 실행하기

이미지를 내려 받았으면 이제 컨테이너를 실행시켜야 한다.
이미지를 도커 명령어로 실행하는 방법은 GitLab Docs에 보면 나와있다.

GitLab volumes 확인

GitLab Docs를 보면 명령어로 컨테이너를 실행하기 전에 volume location을 지정하라고 나와있다.
GitLab Container에서 사용되는 볼륨은 다음과 같다.

Local locationContainer locationUsage
$GITLAB_HOME/data/var/opt/gitlabFor storing application data
$GITLAB_HOME/logs/var/log/gitlabFor storing logs
$GITLAB_HOME/config/etc/gitlabFor storing the GitLab configuration files

필자는 스터디용으로 진행하는 것이였기 때문에 D드라이브 밑에 폴더를 미리 만들어두었다.

폴더를 안만들더라도 볼륨을 설정했는데 디렉토리가 없다면 자동으로 생성해 주는 것으로 알고 있다.

Docker Engine으로 GitLab 실행하기

이제 docker 명령어를 실행하기 위해서 GitLab Docs에 나와있는 코드를 참고하여 작성한다.

docker run --detach \
--name gitlab \
--hostname gitlab.example.com \
--publish 4000:80 \
--restart always \
--volume ./gitlab/config:/etc/gitlab \
--volume ./gitlab/logs:/var/log/gitlab \
--volume ./gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce

필자의 경우 윈도우 cmd로 명령어를 치다 보니 위 스크립트에서 \부분을 제외하고 한 줄로 이어 작성하였다.

옵션설명예시
--name컨테이너 이름 지정--name [컨테이너 이름]
--hostname컨테이너 접속시의 host의 이름 설정--hostname [지정할 host 이름]
--publish-p명령과 동일, 호스트 포트와 컨테이너 포트를 바인딩함--publish [호스트 포트]:[컨테이너 포트]
--restartdocker desktop이 실행될 때마다 자동으로 실행하는 명령어--restart always
--volume데이터가 저장되는 곳을 설정해주는 것이다. 디렉토리에 대한 설명은 위에 참고--volume [호스트 디렉토리]:[컨테이너 디렉토리]

gitlab에서 사용하는 포트는 총 3가지가 존재한다.

포트요청 방식
80http
443https
22ssh

필자의 경우 포트를 4000:80으로 바인딩 하였기에 http://localhost:4000으로 접속하면 다음과 같은 화면으로 접속된다.

Docker-Compose로 GitLab 실행하기

docker compose로 GitLab을 실행하기 위해서는 docker-compose 파일을 먼저 만들어야 한다.

윈도우 기준, cmd에 다음 명령어를 입력하면 파일 하나를 만들 수 있다.

copy con [파일 이름]

파일 이름에다가 필자는 docker-compose.yml을 적고 실행하였다.
실행하면 cmd에서 파일에 들어갈 내용을 작성할 수 있다.
Ctrl + Z를 통해 저장할 수 있는데, 아무것도 작성하지 않고 그냥 저장하면 빈 파일이 생성된다.

이제 docker-compose에 내용을 추가할 차례이다.

# docker-compose.yml
version: '3.4'

services:
  web:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'gitlab.example.com'
    container_name: gitlab
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.example.com'
        gitlab_rails['gitlab_shell_ssh_port'] = 6015
    ports:
      - '4000:80'
      - '6015:22'
    volumes:
      - './gitlab/config:/etc/gitlab'
      - './gitlab/logs:/var/log/gitlab'
      - './gitlab/data:/var/opt/gitlab'
      - './gitlab/backup:/var/opt/gitlab/backups' # 백업 폴더 추가

GITLAB_OMNIBUS_CONFIG밑에다가는 gitlab.rb에 있는 내용을 변경? 할 것을 추가하면 된다.
컨테이너에 접속해서 cd /etc/gitlabcat gitlab.rb를 하면 내용을 확인할 수 있다.

내용 작성을 한 뒤 cmd에서 다음 명령어를 통해 compose 파일을 실행할 수 있다.

docker-compose up -d

GitLab에 접속할 때는 docker 명령어로 접속할 때와 똑같이 http://localhost:4000으로 접속하면 된다.
이후에 compose파일을 실행하기 위해서는 docker 실행 명령어인 start로 실행할 수 있다.

docker start gitlab

GitLab 계정 관리하기

root 계정 접속하기

다른 사람들은 처음 접속하면 비밀번호 변경하는 창이 뜬다고 하는데, 필자는 그 화면이 뜨지 않았다.
만일 비밀번호 변경하는 창이 뜬다면 거기에 새로운 비번 입력하고 진행하면 된다.

맨 처음 root 계정에 접속하기 위한 아이디와 비밀번호를 알려주지 않았다.
그래서 initial password를 알기 위해서 다음 경로로 접속한다.

cd /etc -> cd /gitlab -> cat initial_root_password

cat initial_root_password하게 되면 다음과 같은 것들이 나올 것이다.

# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: [이곳에 있는 비밀번호]

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

위 부분에서 이곳에 있는 비밀번호 부분을 password에 넣고 id는 root로 하면 계정 로그인이 가능하다.

root 계정 비밀번호 초기화

위 방법으로 접속이 안되거나 혹은 비밀번호를 바꾸고 싶은 경우가 있을 것이다.
비밀번호를 변경하기 위해서는 일단 컨테이너에 접속해야 한다.

docker exec -it [컨테이너 이름] /bin/bash

위 명령어로 들어가도 되고 다음과 같이 cli부분으로 들어가도 된다.

컨테이너에 접속하게 되면 다음과 같은 명령어를 통해 root 계정을 찾는다.

gitlab-rails console -e production

위 명령어를 입력하면 여러 정보가 뜰 것이다.

위 처럼 로딩이 다 끝날 때 까지 기다리고, 로딩이 다 되면 root계정을 찾아야 한다.

user = User.where(id: 1).first

gitlab이 생성되면 가장 처음 만들어지는 계정이 root 계정이므로 id를 1로 검색하면 root계정이 나오게 될 것이다.

User id:1 @root라고 나오는 것을 확인할 수 있는데, 처음 계정이 root인 것을 여기서도 확인할 수 있다.

이제 root 정보를 찾았으니 비밀번호를 변경할 차례다.

user.password = '변경할 비밀번호'
user.password_confirmation = '변경할 비밀번호'

비밀번호를 변경할 때 ''사이에 변경할 비밀번호를 입력하여 변경하면 된다.

위 작업을 모두 마치면 이제 root 정보를 저장해야 한다.

user.save

이렇게 입력했을 때 마지막에 true가 나오면 정상적으로 비밀번호가 변경된 것이다.
위 작업을 한 번에 보면 다음 사진을 참고하면 된다.

Reference

profile
Spring Boot 공부하고 있는 고등학생입니다.
post-custom-banner

0개의 댓글