즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

써드파티 도구/Linux(Ubuntu)

Ubuntu Linux에서 Docker-compose 기반 Gitlab 설치하기

다물칸 2023. 3. 24. 15:26
728x90

사전 폴더구성

# 계정의 Home Directory로 이동, 경로는 취향대로 선택한다.
cd ~
# 도커 컨테이너 내부에서 사용될 폴더를 마운트 할 폴더생성; -p는 하위경로까지 포함하여 생성한다.
mkdir -p docker/gitlab/data docker/gitlab/logs docker/gitlab/config
# 폴더 권한변경
chmod -R 755 docker/gitlab/data
cd docker/gitlab

Docker-Compose.yml 생성

vi docker-compose.yml

아래 스크립트를 vi 에디터를 이용해 파일을 생성한다. 

  1. 아래 스크립트를 복사한다.
  2. vi 에디터에서 키보드 I(아이)를 누르면 입력상태로 변경된다.
  3. 키보드 Shift+Insert를 누르면 복사된 스크립트가 붙여진다.
  4. 키보드 콜론+wq(:wq) 타이핑하면 파일저장되면서 vi에디터에서 빠져나온다.
version: '3.9'

services:
  gitlab:
    image: "gitlab/gitlab-ee:latest"
    container_name: gitlab
    restart: always
    hostname: "[서비스할 아이피]"
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://[서비스할 아이피]'
        gitlab_rails['gitlab_shell_ssh_port'] = [서비스할 SSH포트]
        #nginx['redirect_http_to_https'] = true
        #nginx['rdirect_http_to_https_port'] = true
        # Add any other gitlab.rb configuration here, each on its own line
      TZ: 'Asia/Seoul'
    ports:
      - "[서비스할 http포트]:80"
      - "[서비스할 https포트]:443"
      - "[서비스할 SSH포트]:22"
    volumes:
      - "./config:/etc/gitlab"
      - "./logs:/var/log/gitlab"
      - "./data:/var/opt/gitlab"
  • 서비스 할 아이피: Docker가 설치된 호스트의 IP를 입력한다.
  • 서비스 할 SSH포트: Gitlab에서 Pull/Push를 할 때 계정인증을 하는데 이때 사용되는 프로토콜로 ssh와 http 또는 https를 사용한다. 이 때 ssh에서 사용할 포트를 입력한다. 보통 개발자는 ssh를 많이 사용한다. 인증서를 이용하기 때문에 pull/push할 때마다 따로 ID와 패스워드를 입력할 필요가 없다.
  • 서비스 할 http/https포트: http 또는 https로 인증할 경우에 사용되는 포트다. 설정이 안되어 있는 환경에서는 매번 아이디와 패스워드를 입력해야 한다.

도커 컨테이너 제어

# 컨테이너 시작; -d는 데몬형태로 띄우겠다는 옵션이다. 
# 이것을 입력하지 않으면 바로 컨테이너 로그가 표시되는데 
# 거기서 나오면(Ctrl+C) 컨테이너가 종료된다.
docker-compose up -d

# ----------- Docker 많이 사용하는 명령어 ----------
# 컨테이너 동작확인
docker ps -a

# 컨테이너 로그확인
docker logs -f [컨테이너 ID 또는 이름]

# 컨테이너 내부 쉘 진입; 맨 뒤에 bash는 컨테이너 내부에서 사용하는 쉘을 입력하면 된다. 
# 만약 Alpine 같은 리눅스의 경우 Ash쉘을 사용하기 때문에 bash대신 /bin/ash를 입력하자.
docker exec -it [컨테이너 ID 또는 이름] bash

# -----------------------------------------

# 컨테이너 재시작; 현재 컨테이너기반으로 재시작한다.
# 만약 컨테이너가 돌고 있는 중에 컨테이너에 들어가서 파일을 몇개를 수정했다고 치자.
# 컨테이너 재시작은 수정된 이후 시점에서 재시작이 된다.
# 만약 아래 설명할 Down(완전종료)을 시키면 실행 중 수정된 파일은 원복된다.
docker-compose restart 

# 컨테이너 종료
docker-compose down

Gitlab 동작확인

Gitlab은 부팅이 좀 걸린다. 약 3~5분 내/외.

웹브라우저에서 "http://[서비스할 아이피]:[서비스 할 http포트]"로 접속한다.

부팅이 완료되면 계정생성 부터하는데 이때 생성되는 계정이 시스템 관리자가 된다. 

 

 

반응형