GitLab 설치
1. Docker Compose 설치
GitLab을 Docker Compose로 설정하는게 편리하므로 Docker Compose를 설치합니다.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
최신버전을 받고 싶을 경우 아래에서 버전을 확인 후
위 명령어에서 download/2.29.7/ 과 같이 버전숫자만 변경하여 명령어를 실행하면 됩니다.
https://github.com/docker/compose/releases
Releases · docker/compose
Define and run multi-container applications with Docker - docker/compose
github.com
위와 같이 뜨면 설치가 완료된것입니다.
2. Gitlab 이미지 내려받기
Docker Hub에서 gitlab-ce 이미지를 내려받습니다.
참고로 gitlab은 community버전(무료)과 enterprise버전(유료)이 있습니다.
docker pull gitlab/gitlab-ce
pull 받은 이미지를 확인합니다
docker images
3. GitLab 전용 디렉토리 생성
GitLab과 관련된 전용 디렉토리를 생성합니다.
sudo mkdir -p /srv/gitlab/config /srv/gitlab/logs /srv/gitlab/data
sudo chown -R $USER:$USER /srv/gitlab
이렇게 하면 /srv/gitlab 아래에 config, logs, data 디렉토리가 생성되며, 현재 사용자에게 권한이 부여됩니다.
이후 docker-compose.yml 파일에서 이 디렉토리 경로를 사용하면 됩니다.
4. GitLab 컨테이너 설정 파일 생성
현재 /srv/gitlab 경로에서
GitLab 컨테이너를 설정하기 위한 docker-compose.yml 파일을 작성합니다.
vi docker-compose.yml
파일에 다음 내용을 작성합니다.
version: '3'
services:
gitlab:
container_name: gitlab # GitLab 컨테이너 이름
image: 'gitlab/gitlab-ce:latest' # GitLab Commnunity Edition 최신버전
restart: always
hostname: 'gitlab.example.com' # GitLab 호스트 이름
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com' # 외부 URL 설정
gitlab_rails['gitlab_shell_ssh_port'] = 22 # SSH 포트 설정(호스트포트)
ports:
- '80:80' # HTTP 포트
- '443:443' # HTTPS 포트
- '22:22' # SSH 포트 (호스트 포트:컨테이너 포트)
volumes:
- './config:/etc/gitlab' # GitLab 구성 파일
- './logs:/var/log/gitlab' # 로그 파일
- './data:/var/opt/gitlab' # GitLab 데이터
저는 도메인이 없어서 외부아이피를 적었고,
또한 이미 SSH포트(22)를 사용하고 있었기에 다른 포트(5822)를 지정해주었습니다.
저는 안전한 보안을 위해 호스트포트를 모두 다르게 변경해주었습니다.
기본포트(80,443,22)가 아닌 다른 포트를 쓰면 반드시 추가 설정을 해야합니다
version: '3'
services:
gitlab:
container_name: gitlab
image: 'gitlab/gitlab-ce:latest' # GitLab Commnunity Edition 최신버전
restart: always
hostname: '59.59.54.54'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://59.59.54.54:8070'
gitlab_rails['gitlab_shell_ssh_port'] = 22
ports:
- '8070:80' # HTTP 포트
- '2443:443' # HTTPS 포트
- '2222:22' # SSH 포트 (호스트 포트:컨테이너 포트)
volumes:
- './config:/etc/gitlab' # GitLab 구성 파일
- './logs:/var/log/gitlab' # 로그 파일
- './data:/var/opt/gitlab' # GitLab 데이터
- '/etc/localtime:/etc/localtime:ro'
- '/etc/timezone:/etc/timezone:ro'
6. Gitlab 시작
Docker Compose를 사용하여 GitLab을 시작합니다.
docker-compose up -d
-d 플래그는 백그라운드에서 실행하도록 합니다
정상적으로 실행되고 있는지 확인해야합니다
docker ps
Status가 Up 이어야 정상적으로 실행되고 있다는 뜻입니다.
7. GitLab 컨테이너 접근 & 추가설정(기본포트 안쓰는 경우)
1) GitLab 컨테이너 접근
docker ps를 치면 첫번째 컬럼에 컨테이너id가 있습니다
그 id를 가져다가 아래 명령어에 컨네이너id 부분에 입력하고 엔터를 쳐서
gitlab 컨테이너 내부로 접속합니다
sudo docker exec -it 컨테이너id /bin/bash
다른 리눅스환경으로 바뀐다면 접속에 성공한 것입니다.
2) gitlab.rb 수정
gitlab 컨테이너에 접속한 상태에서 아래 명령어로 경로를 이동합니다
cd /etc/gitlab
ls 명령어를 입력하면 안에 있는 파일들이 보이는데 그 중 gitlab.rb가 있습니다.
이 파일을 수정해야합니다.
vi gitlab.rb
그럼 아래와 같이 여러 주석들로 가득찬 내용들이 보일 것입니다.
바꿔줘야할 항목은 아래 두개입니다
external_url "http://HOST주소:내부포트"
gitlab_rails['gitlab_shell_ssh_port'] = 내부포트
이 중에서 30번째쯤 라인에 external_url 주석이 있습니다
찾는게 힘들다면 vi 검색기능을 이용해보세요
https://jwinjection.tistory.com/278
Ubuntu | VI 편집기 검색(찾기)기능
파일 내부에서 검색하는 방법1. 명령모드 진입명령 모드로 들어가기 (편집모드에서 ESC를 누르면 명령 모드로 돌아옵니다)2. 검색 명령어 입력 /검색어 : 파일 내에서 앞으로 검색 ?검색어
jwinjection.tistory.com
주석(#) 을 해제 하고 아래와 같이 자신이 위에서 설정했던 내용으로 수정합니다
gitlab_rails 주석은 700번쯤에 있습니다
마찬가지로 주석(#)을 해제하고 위에서 설정했던 컨테이너 내부 포트번호로 수정해줍니다
저장하고 나옵니다
esc 누르고 :wq!
3) Gitlab 재설정
컨테이너 내부에서 gitlab을 재설정합니다
gitlab-ctl reconfigure
이제 gitlab 설정이 다되었습니다
웹 브라우저를 열어서 gitlab 웹서버에 접속해봅니다.
아래 페이지가 뜨면 설치 성공입니다.
컨테이너 밖으로 나가고싶다면 아래 명령어를 입력하면됩니다.
하지만 아직 관리자계정 설정을 해야하기에 나중에 나가도록합니다.
exit
8. GitLab root 계정
1) initial_root_password
root 계정 id는 root 이지만 비밀번호는 직접 알아내야합니다.
root 계정의 초기 비밀번호를 찾아보겠습니다.
이미 컨테이너 안에있다면 아래 명령어는 생략해도 됩니다.
docker exec -it [컨테이너명 또는 컨테이너id] /bin/bash
아래 명령어를 입력합니다
cat /etc/gitlab/initial_root_password | grep Password:
그럼 아래와 같이 Password 옆에 root 비밀번호가 나옵니다.
root@ip...:/home/ubuntu# cat /etc/gitlab/initial_root_password | grep Password:
Password: 1dHlEnF...
아이디는 root 이고
비밀번호는 저 비밀번호를 치면 root 계정으로 로그인 됩니다.
그런데 저는 gitlab을 설치한지 24시간이 지났기때문에
아래와같이 initial_root_password 파일을 못찾는다고 나왔습니다.
initial_root_password 는 gitlab을 설치 후 24시간이 지나면 자동으로 삭제가 되므로 그 안에 관리자 비밀번호를 확인해서 비밀번호를 변경해야합니다.
2) root 계정의 비밀번호 재설정
설치 후 24시간이 지나 initial_root_password 파일이 없거나, 그냥 관리자 계정 비밀번호를 reset 하고싶다면 아래 명령어를 사용합니다.
gitlab-rake 'gitlab:password:reset[root]'
저는 위 명령어를 입력하고 1분정도 지나니까 비밀번호 입력하는 프롬프트가 떴습니다.
3) 사용자계정 비밀번호 변경하는법
gitlab-rake 'gitlab:password:reset'
'DevOps > 🐳 Docker & Kubernetes' 카테고리의 다른 글
Docker | Jenkins 설치 (2) | 2024.09.30 |
---|---|
Docker | 도커의 접근방식 DinD, DooD (0) | 2024.09.30 |
Docker | PostgreSQL 설치 (2) | 2024.09.26 |
Docker | 초간단 도커 사용법 (2) | 2024.09.25 |
Docker | 도커 설치법 (0) | 2024.09.25 |