리셋 되지 말자

[Jenkins] Jenkins GitLab 연동(1) Docker 설치, GitLab 설치 본문

CI CD

[Jenkins] Jenkins GitLab 연동(1) Docker 설치, GitLab 설치

kyeongjun-dev 2021. 2. 24. 16:23

구현 방법

- CentOS 7 서버에 Docker와 Docker-compose를 설치하여 Docker 위에 GitLab을 설치한다.

- 작업은 CentOS 7 서버에 원격으로 ssh를 이용해 접속하여 진행하였다.

 

시스템 사양

CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O          BLOCK I/O        PIDS
b8df28df5887   vagrant_web_1   6.07%     2.688GiB / 3.852GiB   69.80%    37.1kB / 747kB   322MB / 79.2MB   336

위는 gitlab-ce 컨테이너를 실행했을 때의 컴퓨터 리소스 사용량이다. 최소 3 GB 정도의 메모리는 할당이 되어야 원할한 사용이 가능하다...

 

시스템 구성

원격으로 공유기를 통해 CentOS 7 서버에 접속

 

포트포워딩

ssh 포트 : 비공개

GitLab Web Server(Nginx) : iptime 공유기 -> 23002:9090, GitLab 컨테이너 -> 9090:80

 

- 원격 서버에 ssh 접속

$ ssh root@113.198.137.110
root@113.198.137.110's password:
Last login: Wed Feb 24 13:01:47 2021 from 113.198.137.97
[root@localhost ~]#

 

Docker 설치

- yum update

[root@localhost ~]# sudo yum update -y

// 업데이트 완료
Complete!
[root@localhost ~]#

 

- yum utils install

[root@localhost ~]# sudo yum install -y yum-utils

// 설치 완료
Complete!
[root@localhost ~]#

 

- docker community edition repo 추가

[root@localhost ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

// repo 추가 완료
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@localhost ~]#

 

- docker community edition 설치(docker 설치)

[root@localhost ~]# sudo yum install -y docker-ce docker-ce-cli containerd.io

// 설치 완료
Complete!
[root@localhost ~]#

// 특정 버전을 설치하기 위해서는 아래와 같이 버전을 명시하여 설치
yum install -y docker-ce-3:20.10.2-3.el7 docker-ce-cli-3:20.10.2-3.el7 containerd.io

// 설치 가능한 버전들은 아래 명령어로 확인 가능
yum list docker-ce --showduplicates | sort -r

 

- docker service 확인

[root@localhost ~]# systemctl status docker

// 출력 결과
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: https://docs.docker.com

 

- docker service 시작 및 enable

[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-02-24 14:54:15 KST; 12s ago
     Docs: https://docs.docker.com
 Main PID: 31395 (dockerd)
   CGroup: /system.slice/docker.service
           └─31395 /usr/bin/dockerd -H fd:// --containerd=/run...

Feb 24 14:54:13 localhost.localdomain dockerd[31395]: time="20...
Feb 24 14:54:13 localhost.localdomain dockerd[31395]: time="20...
Feb 24 14:54:13 localhost.localdomain dockerd[31395]: time="20...
Feb 24 14:54:14 localhost.localdomain dockerd[31395]: time="20...
Feb 24 14:54:14 localhost.localdomain dockerd[31395]: time="20...
Feb 24 14:54:14 localhost.localdomain dockerd[31395]: time="20...
Feb 24 14:54:14 localhost.localdomain dockerd[31395]: time="20...
Feb 24 14:54:14 localhost.localdomain dockerd[31395]: time="20...
Feb 24 14:54:15 localhost.localdomain systemd[1]: Started Dock...
Feb 24 14:54:15 localhost.localdomain dockerd[31395]: time="20...
Hint: Some lines were ellipsized, use -l to show in full.

 

- docker version 확인

[root@localhost ~]# docker --version
Docker version 20.10.3, build 48d30b5

 

 

Docker compose 설치

- docker compose 설치

[root@localhost ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

/download/ 다음에 버전을 명시하여 특정 번의 docker-compose 설치가 가능함

 

- docker compose version 확인

[root@localhost ~]# docker-compose --version
-bash: /usr/local/bin/docker-compose: Permission denied

Permission denied가 뜨면 권한을 부여해야 한다.

 

- docker compose 사용권한 부여 및 version 확인

[root@localhost ~]# chmod +x /usr/local/bin/docker-compose
[root@localhost ~]# docker-compose --version
docker-compose version 1.27.4, build 40524192

 

GitLab 설치 및 실행

- 홈 디렉토리(~)로 이동 후, docker-compose.yml 파일을 생성한다. ls로 홈 디렉토리의 파일 목록 확인

[root@localhost ~]# cd ~
[root@localhost ~]# vi docker-compose.yml
[root@localhost ~]# ls
anaconda-ks.cfg  docker-compose.yml

 

- docker-compose.yml

gitlab:
  image: "gitlab/gitlab-ce:latest"
  restart: always
  hostname: "113.198.137.110"
  container_name: gitlab
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'http://113.198.137.110'
      # Add any other gitlab.rb configuration here, each on its own line
  ports:
    - "9090:80"
    - "22:22"
    - "443:443"
  volumes:
    - "~/gitlab/config:/etc/gitlab"
    - "~/gitlab/logs:/var/log/gitlab"
    - "~/gitlab/data:/var/opt/gitlab"

hostname과 external_url에는 현재 ssh로 접속한 서버의 ip주소를 적어준다.

 

- docker compose 실행

[root@localhost ~]# docker-compose up

up 명령으로 작성한 docker-compose.yml을 기반으로 실행시킨다. 이미지를 다운받는 작업이 수행되고(꽤 길다) gitlab이 실행된다.

위 그림에 표시된 메시지가 뜨면 설치가 완료된 것이다.  로그가 너무 빨리 지나가서 못 볼수도 있는데 

 

위 그림의 로그들 처럼 {"get"...}, {"timestamp"..." 등등 요란한 로그가 뜨면 curl 명령으로 확인할 수 있다.

$ curl 'http://113.198.137.110:23002'
<html><body>You are being <a href="http://113.198.137.110:23002/users/sign_in">redirected</a>.</body></html>

curl을 통해 "http://<ip주소>:23002/usrs/sign_in"으로 접속하라는 정보를 확인할 수 있다. 출력되는 url을 클릭하여 접속한다.

 

- gitlab 접속

url로 접속 시, GitLab 페이지로 이동할 수 있다. 첫 접속시에 root 계정의 암호를 설정할 수 있다. 우측의 'Change your password'로 root 계정에 대한 패스워드를 설정할 수 있다. 적당히 패스워드를 설정하도록 한다.

 

+ 버전이 업데이트 되면서, 맨 처음 root 계정이 자동으로 생성되고, passowrd가 컨테이너 내부에서 확인 가능하도록 변경되었다. 아래와 같이 컨테이너 내부의 파일을 확인하여 나오는 패스워드로 로그인이 가능

$ docker exec -it <gitlab컨테이너이름> cat /etc/gitlab/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: 9PG1bPBYLuh1vzhrN7Wrhtbd+3UGE+0RUZ5HgR1T82U=

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

 

'Username or email'에 root, 'Password'에는 방금 설정한 패스워드를 입력하여 로그인한다.

 

로그인에 성공한 모습이다.(짝짝짝)

 

 

Comments