Self managed repository and CI #5 - Gitlab

Jinwon Seo·2022년 11월 30일
0
post-thumbnail

앞서 구성한 docker compose에 Gitlab을 추가 하겠습니다.

├─ nginx
│   ├─ config
│   │   ├─ minio.conf
│   │   └─ nexus.conf
│   └─ nginx.conf
└─ docker-compose.yml # this!

Gitlab

Gitlab의 docker images는 아래 링크에서 확인할 수 있습니다.

Docker hub - gitlab/gitlab-ee
Docker hub - gitlab/gitlab-ce

저는 gitlab-ee로 구성하였습니다. (라이선스 등록을 하지 않으면 ce 기능과 동일)

Gitlab 구성

docker compose에 gitlab이 사용할 volume을 추가합니다.

# ./docker-compose.yml

volumes: 
  gitlab-config:
    name: gitlab-config
  gitlab-data:
    name: gitlab-data
  gitlab-logs:
    name: gitlab-logs

docker compose에 gitlab 구성을 추가합니다.

# ./docker-compose.yml

services:
  (...중략...)
  gitlab:
    image: gitlab/gitlab-ee:15.5.3-ee.0
    container_name: gitlab
    hostname: gitlab
    restart: always
    volumes: 
      - type: volume
        source: gitlab-config
        target: /etc/gitlab
      - type: volume
        source: gitlab-data
        target: /var/opt/gitlab
      - type: volume
        source: gitlab-logs
        target: /var/log/gitlab
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url "http://gitlab.domain.com"
        registry_external_url "http://registry.gitlab.domain.com"
    networks: 
      docker-host:
        ipv4_address: 172.20.0.10

docker-compose.yml이 존재하는 위치에서 아래 명령을 실행합니다.

$ docker-compsoe up -d gitlab

실행이 완료되면 아래와 같이 container 상태에 healthy로 표시됩니다.

$ docker ps

CONTAINER ID   IMAGE                          COMMAND                  CREATED             STATUS                             PORTS                     NAMES
ed235678a173   gitlab/gitlab-ee:15.5.3-ee.0   "/assets/wrapper"        2 minutes ago       Up 2 minutes (healthy)             22/tcp, 80/tcp, 443/tcp	gitlab

Nginx reverse proxy 설정

생성된 gitlab에 접속할 수 있도록 nginx의 reverse proxy 설정 파일을 추가합니다.

├─ nginx
│   ├─ config
│   │   ├─ gitlab.conf # this!
│   │   ├─ minio.conf
│   │   └─ nexus.conf
│   └─ nginx.conf
└─ docker-compose.yml
# ./nginx/config/gitlab.conf

upstream gitlab.domain.com {
        server gitlab:80;
}
server {
	listen 80;
	server_name gitlab.domain.com;

	location / {
		proxy_pass http://gitlab.domain.com;
	}
}

upstream registry.gitlab.domain.com {
        server gitlab:80;
}
server {
	listen 80;
	server_name registry.gitlab.domain.com;

	location / {
		proxy_pass http://registry.gitlab.domain.com;
	}
}

웹 브라우저를 통해 http://gitlab.domain.com 으로 접속 하면 아래와 같은 페이지가 연결됩니다.

Gitlab 관리자 계정

gitlab의 관리자 계정은 root이고 초기 비밀번호는 컨테이너 안의 파일에 생성되어 있습니다. 아래 명령을 실행하면 파일 내용이 출력 됩니다.

$ docker -exec -itu 0 gitlab cat /etc/gitlab/initial_root_password

로그인 하면 아래와 같은 UI가 출력 됩니다.

예제코드

작성된 코드는 아래 Repository에 올려두었습니다.

Github - self-managed-repository-and-ci

Next

다음은 gitlab에 ci 동작을 위한 gitlab-runner를 등록하고 설정하도록 하겠습니다.

  1. Self managed repository and CI #1 - Overview
  2. Self managed repository and CI #2 - Docker network, Nginx reverse proxy
  3. Self managed repository and CI #3 - Nexus3
  4. Self managed repository and CI #4 - Minio
  5. Self managed repository and CI #5 - Gitlabㆍ현재 글
  6. Self managed repository and CI #6 - Gitlab-runner
  7. Self managed repository and CI #7 - Gitlab-CI

0개의 댓글