CentOS vm 환경에서 진행하였습니다.
기본 최소사양: 메모리 4G 이상 (권장: 8G), 코어는 2코어
CI/ CD 구축을 위한 Jenkins 설치에 이어 GitLab 을 설치하도록 하겠습니다.
- Docker 설치
docker-compose.yml 을 실행하기 위해 docker 가 우선 설치되어 있어야 합니다.
docker 설치는 아래 포스트를 참고해 주세요.
2023.11.25 - [Docker/Jenkins] - [Jenkins] Docker 에 Jenkins 설치하고 실행까지
- Docker-compose 설치
- Docker-compose 설치
※ Docker 와 Docker-compose 의 차이
Docker와 Docker-compose 는 둘 다 컨테이너화된 애플리케이션을 관리하고 배포하기 위한 도구이지만, 각각의 목적과 사용 시나리오에서 차이가 있습니다.
1. Docker
- Docker는 컨테이너 기술을 기반으로 하는 오픈 소스 플랫폼 입니다.
- 컨테이너는 애플리케이션을 실행하는데 필요한 모든 것을 패키지화 하고 격리된 환경에서 실행할 수 있도록 합니다.
- Docker는 컨테이너를 생성하고 실행하는데 사용되며, 도커 이미지를 통해 애플리케이션과 그 실행 환경을 정의합니다.
2. Docker Compose
- Docker Compose는 여러 컨테이너로 구성된 애플리케이션을 정의하고 실행하기 위한 도구입니다.
- YAML 파일을 사용하여 여러 서비스, 네트워크 및 볼륨을 정의하고, 이를 한번에 구동하거나 다양한 환경에서 쉽게 배포할 수 있습니다.
- Docker Compose 를 사용하면 여러 도커 컨테이너를 간단한 구성 파일을 통해 한번에 관리 할 수 있습니다.
즉, 도커는 개별 컨테이너 관리를 위한 도구이고, 도커 컴포즈는 여러 개의 도커 컨데이너로 이루어진 애플리케이션을 쉽게 정의하고 관리하기 위한 도구 입니다.
도커는 단일 컨테이너를 다루는데 중점을 두고 있으며, 도커 컴포즈는 여러 컨테이너 간의 관계와 설정을 효과적으로 다루기 위해 만들어진 보조 도구 입니다.
yum -y update
yum install -y yum-utils
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
- Docker-compose 버전 확인
docker-compose --version
Permission denied 가 나오면 해당 docker-compose 폴더에 권한을 줘야합니다.
chmod +x /usr/local/bin/docker-compose
- GitLab 설치
- docker-compose.yml 파일 생성
※ docker-compose.yml
`docker-compose.yml` 파일은 docker-compose를 사용하여 여러 도커 컨테이너로 이루어진 애플리케이션을 정의하고 구성하는 설정파일 입니다.
이 파일은 YAML 포맷으로 작성되며, 컨테이너, 서비스, 네트워크, 볼륨 등을 정의하고 연결하는 데 사용됩니다.
`docker-compose.yml` 파일의 역할
1. 서비스 정의:
- 애플리케이션을 구성하는 각 서비스를 정의합니다. 각 서비스는 도커 이미지, 환경 변수, 포트 매핑 등을 포함할 수 있습니다.
2. 네트워크 및 볼륨 설정:
- 서비스 간 통신을 위한 네트워크 및 볼륨을 설정합니다. `docker-compose.yml` 파일에서 서비스들이 공유해야하는 네트워크나 데이터 볼륨을 정의할 수 있습니다.
3. 환경 변수 및 설정 관리:
- 환경 변수를 통해 서비스에 필요한 설정을 제공하고 관리합니다. 이는 애플리케이션의 설정을 유연하게 조정하는데 도움이 됩니다.
4. 컨테이너 간 의존성 관리:
- 여러 서비스가 서로 의존하는 경우, 이 의존성을 명시적으로 정의하여 도커 컴포즈가 올바른 순서로 컨테이너를 시작하고 정지할 수 있도록 합니다.
도커 컴포즈는 이러한 `docker-compse.yml` 파일을 읽고, 정의된 서비스들을 한 번에 시작하거나 중지하는 등의 작업을 수행할 수 있습니다. 이를 통해 개발, 테스트, 스테이징, 프로덕션 환경에서 일관된 환경을 유지하고 애플리케이션을 관리할 수 있습니다.
해당 root directory 에 docker-compse.yml 파일을 생성합니다.
// 현재 디렉터리 확인
pwd
vi docker-compose.yml
docker-compse.yml 파일은 tab을 지원하지 않습니다.
그래서 tab 대신 공백은 space 로 입력해 주세요.
gitlab:
image: "gitlab/gitlab-ce:latest"
restart: always
hostname: "127.0.0.1" <- 해당 인스턴스 IP
container_name: gitlab
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://127.0.0.1' <- 해당 인스턴스 IP
# Add any other gitlab.rb configuration here, each on its own line
ports:
- "9090:80"
- "1022:22"
- "443:443"
volumes:
- "~/gitlab/config:/etc/gitlab"
- "~/gitlab/logs:/var/log/gitlab"
- "~/gitlab/data:/var/opt/gitlab"
- "~/gitlab/backups:/var/opt/gitlab/backups"
- docker compose 를 이용하여 설치
docker-compose up
// 백그라운드 실행 옵션
docker-compose up -d
- docker compose 상태 체크
docker-compose ps
해당 명령어는 컨테이너의 이름, ID, 상태 및 관련 포트와 같은 정보를 제공합니다.
- 방화벽 설치
yum install firewalld
systemctl unmask firewalld
systemctl enable firewalld
systemctl start firewalld
- 방화벽 설정 및 재시작
위 yaml 파일에서 설정한 포트들을 추가하고 방화벽을 재시작 합니다.
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-port=9090/tcp
sudo systemctl reload firewalld
- 해당 서버 IP 및 포트로 접속해 봅시다 !
ex) http://해당 서버 IP:9090/
깃랩의 기본 최소사양은 메모리 4G 이상 (권장: 8G), 코어는 2코어 입니다.
메모리 4G 일 경우 데몬 기동 및 초기설정으로 바로 페이지가 안보일 수 있습니다.
좀 기다리시면 됩니다 !
- GitLab 로그인
- 초기 계정 입력
처음 접속 시 root 암호가 설정 안되어 있으므로 초기암호로 들어가서 변경을 해줍니다.
우선 git bash 로 들어가서 확인합니다.
docker exec -it gitlab /bin/bash
cat /etc/gitlab/initial_root_password
Username: root
Password: 상위 password
- 암호 변경
로그인 했으니 암호를 변경해 줍니다.
여기까지 GitLab 설치 및 실행이었습니다 ~
다음 포스트에서 Gitlab 에 프로젝트 생성하고 테스트 해보도록 할게요.