앞서 구성한 docker compose에 Gitlab을 추가 하겠습니다.
├─ nginx
│ ├─ config
│ │ ├─ minio.conf
│ │ └─ nexus.conf
│ └─ nginx.conf
└─ docker-compose.yml # this!
Gitlab의 docker images는 아래 링크에서 확인할 수 있습니다.
저는 gitlab-ee로 구성하였습니다. (라이선스 등록을 하지 않으면 ce 기능과 동일)
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
생성된 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의 관리자 계정은 root이고 초기 비밀번호는 컨테이너 안의 파일에 생성되어 있습니다. 아래 명령을 실행하면 파일 내용이 출력 됩니다.
$ docker -exec -itu 0 gitlab cat /etc/gitlab/initial_root_password
로그인 하면 아래와 같은 UI가 출력 됩니다.
작성된 코드는 아래 Repository에 올려두었습니다.
다음은 gitlab에 ci 동작을 위한 gitlab-runner를 등록하고 설정하도록 하겠습니다.
- Self managed repository and CI #1 - Overview
- Self managed repository and CI #2 - Docker network, Nginx reverse proxy
- Self managed repository and CI #3 - Nexus3
- Self managed repository and CI #4 - Minio
- Self managed repository and CI #5 - Gitlabㆍ현재 글
- Self managed repository and CI #6 - Gitlab-runner
- Self managed repository and CI #7 - Gitlab-CI