기본 환경
Host
VMware® Workstation 14 Player 14.0.0 build-6661328
OS
Ubuntu 16.04.6 LTS
Application
- Docker : 19.03.5, build 633a0ea838
- docker-compose : 1.11.2, build dfed245
- git : 2.7.4
GitLab CE
GitLab은 서버에 설치해서 사용할 수 있는 git 클라이언트 어플리케이션입니다. 상용버전인 gitlab-EE (Enterprise Edition) 와 무료버전인 gitlab-CE (Community Edition)을 제공하고 있습니다.
gitlab CE를 도커로 설치하는 법에 대해서 정리해 보겠습니다.
GitLab에서는 공식적으로 도커이미지를 제공하고 있기때문에 바로 pull 해서 사용가능합니다.
- Docker Hub 주소 : https://hub.docker.com/r/gitlab/gitlab-ce/
- GitLab Docker 메뉴얼 : https://docs.gitlab.com/omnibus/docker/
설치하기(Docker)
설치하는 방법을 1) docker command 로 설치하는 방법 과 2) docker-compose 파일로 설치하는 방법이 있습니다.
1) docker command 로 설치
# Gitlab Docker image 다운로드 및 서비스 시작
# Gitlab service 포트 80
# Gitlab root 관리자 비밀번호 root_git
# 사용자 환경에 맞는 IP로
docker run --detach \
--publish 80:80 \
--publish 443:443 \
--publish 22:22 \
--name gitlab \
--restart always \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://<사용자 환경에 맞는 IP>';" \
--env GITLAB_ROOT_PASSWORD="root_git" \
--env GITLAB_TIMEZONE="Asia/Seoul" \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
2) docker-compose 파일 작성
#docker-compose.gitlab 파일 작성
sudo vi /opt/gopath/src/gitlab/docker-compose.gitlab.yml
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: '<사용자 IP>'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://<사용자 IP>'
GITLAB_ROOT_PASSWORD: root_git
GITLAB_TIMEZONE: Asia/Seoul
ports:
- '9090:80'
- '443:443'
- '22:22'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
#docker-compose로 컨테이너 실행
docker-compose -f /opt/gopath/src/gitlab/docker-compose.gitlab.yml up -d
실행확인
Nginx를 사용하여 프록시 서버 세팅(선택)
Nginx와 같은 웹 서버를 왜 사용할까요?
- 클라이언트의 요청 처리를 분산시킬 수 있는 로드 밸런스를 사용함으로써 효율적인 처리를 합니다.
- 정적파일을 다이렉트로 제공해주기 때문에 백엔드 서버에 부담을 주지 않습니다.
- 클라이언트는 Ngnix 포트로만 백엔드 서버에 접근할 수 있어 보안에 도움이 됩니다.
우선 nginx를 설치합니다.
#nginx 설치(proxy 설정을 위해서..)
sudo apt-get install nginx-full
그런 다음 nginx의 conf.d폴더에 gitlab.conf 파일을 하나 만들고 서버를 추가하도록 하겠습니다. conf.d폴더의 위치는 /etc/nginx/conf.d 입니다.
Nginx의 디렉터리 의미를 간단하게 알아봅시다
- /etc/nginx: 해당 디렉터리는 Nginx를 설정하는 디렉터리입니다. 모든 설정을 이 디렉터리 안에서 합니다.
- /etc/nginx/nginx.conf: Ngnix의 메인 설정 파일로 Nginx의 글로벌 설정을 수정 할 수 있습니다.
- /etc/nginx/sites-available: 해당 디렉터리에서 프록시 설정 및 어떻게 요청을 처리해야 할지에 대해 설정 할 수 있습니다.
- /etc/nginx/sites-enabled: 해당 디렉터리는 sites-available 디렉터리에서 연결된 파일들이 존재하는 곳 입니다.이 곳에 디렉터리와 연결이 되어 있어야 nginx가 프록시 설정을 적용합니다.
- /etc/nginx/snippets: sites-available 디렉터리에 있는 파일들에 공통적으로 포함될 수 있는 설정들을 정의할 수 있는 디렉터리 입니다.
#proxy 세팅
sudo vi /etc/nginx/conf.d/gitlab.conf
conf.d폴더에 gitlab.conf 라는 파일을 생성한 뒤 아래의 설정을 입력합니다.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name <사용IP>;
# Load configuration files for the default server block.
location / {
proxy_pass http://localhost:9090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
이 파일의 코드가 가지는 의미를 해석해보면 클라이언트가 <사용IP>:80/ 주소로 요청하면 현재 서버에서 실행되고 있는 http://127.0.0.1:9090 으로 클라이언트의 요청을 대신 보내준다는 의미 입니다.
#nginx 재시작
systemctl restart nginx
만약 nginx 구동에 오류가 발생할 경우에는 다음과 같이 처리합니다. (포트 문제 발생)
sudo vi /etc/nginx/sites-enabled/default
default 파일의 17, 18번째 줄을 주석 처리합니다.
#listen 80 default_server;
#listen [::]:80 default_server;
GitLab Web 접속
접속 URL : http://<사용 IP>:9090 (프록시 서버를 사용하였으면 포트 없이 접속 가능)
접속 ID/PW : root/root_git
참고
Nginx
https://velog.io/@jeff0720/2018-11-18-2111-%EC%9E%91%EC%84%B1%EB%90%A8-iojomvsf0n
'기타' 카테고리의 다른 글
GitLab 과 Slack 연동 (0) | 2019.12.18 |
---|---|
GitLab Runner 를 사용하여 GitLab CI 구성하기 (1) | 2019.12.12 |
Docker Local Registry 구축 (0) | 2019.12.11 |
IPFS Tutorial: IPFS(InterPlanetary File System) 설치하기 (1) | 2019.02.27 |
Waspmote ZigBee Networking Guide (0) | 2018.05.28 |