본문 바로가기
IT/기타

로컬 gitlab -> docker 컨테이너 전환 (업그레이드 및 마이그레이션 포함)

by JGSHIN 2025. 2. 17.
SMALL

gitlab, gitlab-runner 서버 : 프라이빗 오픈스택 - 10.0.0.5

 

10.0.0.4 => 10.0.0.5 Gitlab 마이그레이션 및 도커 컨테이너 전환

 

이미지 파일화 -> 프라이빗 레지스터리에 올려놓음

dockerpr.educo.co.kr/service/gitlab/gitlab-runner:v13.12.0

dockerpr.educo.co.kr/service/gitlab/gitlab:v13.12.15

 

도커야뮬 경로 : /home/sysoper/docker-compose

 

아래 와 같이 볼륨 마운트바인드 사용함

 

gitlab 데이터 경로 : /home/gitlab/config,data,logs,git

gitlab-runner 데이터 경로 : /home/gitlab-runner/config

gitlab 백업 경로 : /home/gitlab/git/gitlab_backup

 

 

진행 순서

* 백업 마이그레이션이 양방향으로 같은 버전이여야 복원이 가능하다 기존 10.0.0.4 버전 : 12.7.5

10.0.0.5 - docker-compose 12.7.5 같은 버전 설치 후 복원

# docker exec -it gitlab /bin/bash

$ docker exec -it gitlab gitlab-backup restore BACKUP=파일명

복원 확인 후

아래 와 같이 업데이트 진행

gitlab-ce-12.10.14

gitlab-ce-13.0.14

gitlab-ce-13.1.11

gitlab-ce-13.8.8

gitlab-ce-13.12.15

정상 확인 후

 

gitlab-runner 생성

# docker exec -it gitlab-runner /bin/bash

$ gitlab-runner resister

 

개발팀 push, pull 테스트, 빌드 확인 - 오픈

 

나중에 장애 발생 시 - 업데이트 과정은 필요 없습니다.

13.12.15 버전이므로 13.12.15버전으로 백업 받으닌깐 그냥 컨테이너 다시 살리고 복원 시키면 됨 ( 굳이 데이터 날라간거 아니면 복원과정은 필요없음, 데이터는 로컬이 가지고 있으니 그냥 컨테이너만 살리면 됨 )

러너유저도 바인드마운트 되어 있어서 나중에는 굳이 설정 안해도 됩니다. 컨테이너만 살리면 됨 - 신규러너 추가 시만

 

########### gitlab docker ###########

docker-compose.yml

 

version: '3.9'

 

services:

  gitlab:

    image: ".gitlab/gitlab:v13.12.15"

    container_name: gitlab

    restart: always

    hostname: "dev.git"

    environment:

      GITLAB_OMNIBUS_CONFIG: |

#        external_url 'http://10.0.0.5:5584'

#        gitlab_rails['gitlab_shell_ssh_port'] = 2222

        # Add any other gitlab.rb configuration here, each on its own line

      TZ: 'Asia/Seoul'

    ports:

      - "5584:5584"

      - "4443:443"

      - "2222:22"

    volumes:

      - "/home/gitlab/config:/etc/gitlab"         ## 깃랩 구성파일 로컬호스트로 바인드마운트

      - "/home/gitlab/logs:/var/log/gitlab"       ## 깃랩 로그

      - "/home/gitlab/data:/var/opt/gitlab"       ## 깃랩 데이터

      - "/home/gitlab/git:/home/git"               ## 깃랩 백업 경로 기존과 동일하게 맞춰줬음 /home/git/gitlab_backup

      - ./gitlab.rb:/etc/gitlab/gitlab.rb              ## 깃랩 핵심파일

      - ./gitlab-secrets.json:/etc/gitlab/gitlab-secrets.json  ## 깃랩 토큰을 통한 CI/CD,웹훅 설정값 구성파일

 

 

  gitlab-runner:

    image: "gitlab/gitlab-runner:v13.12.0"

    container_name: gitlab-runner

    restart: always

    volumes:

      - "/home/gitlab-runner/config:/etc/gitlab-runner"    ## 깃랩 러너유저 구성파일

      - "/home/sysoper/.ssh:/home/gitlab-runner/.ssh"     ## 컨테이너 새로 생성시 키값을 새로 등록하는 번거롭이 있어서 컨테이너 올리기만 하면 바로 서비스를 할 수 있게 만들고 마운트 시킴

      - "/var/run/docker.sock:/var/run/docker.sock"         ## 도커 프록시, 도커 소켓 파일 구성 등

 

 

############ gitlab Dockerfile ############

Dockerfile

 

## GIT IMAGE 오피셜 공식 홈페이지에서 받음 ##

FROM gitlab/gitlab-ce:13.12.15-ce.0

 

## 설정값 적용을 위해 설치 ##

RUN apt-get update

RUN apt-get install sshpass

 

## MAVEN

COPY ./maven.tar /usr/local

RUN tar -xvf /usr/local/maven.tar -C /usr/local

 

## JAVA

COPY ./java.tar /usr/local

RUN tar -xvf /usr/local/java.tar -C /usr/local

 

## profile source MAVEN, JAVA 환경변수 수정

COPY ./profile /etc/profile

COPY ./source.sh /home

 

# 환경변수 적용 스크립트

WORKDIR /home

RUN ./source.sh

 

 

############ gitlab-runner Dockerfile ###########

Dockerfile

 

## 깃랩 공식 오피셜 이미지 기반 사용 ##

FROM gitlab/gitlab-runner:v13.12.0             

 

## SSHPASS 푸쉬를 위해 설치 ##

RUN apt-get update

RUN apt-get install sshpass

 

## war파일, 자동화를 위해 MAVEN 설치 및 구성설정 카피 ##

COPY ./maven.tar /usr/local

RUN tar -xvf /usr/local/maven.tar -C /usr/local

 

## JAVA 자바설치 및 구성설정 카피 ##

COPY ./java.tar /usr/local

RUN tar -xvf /usr/local/java.tar -C /usr/local

 

## MAVEN, JAVA 환경변수 적용 ##

COPY ./profile /etc/profile

 

## 변수 적용을 위해 우리 서버에 맞게 따로 스크립트 sh 짜놓음 ##

COPY ./source.sh /home

 

## gitlab-runner라는 유저로 원격지에 접속을 위해 키 파일을 옮김 ##

COPY ./educo_dev.pem /home/gitlab-runner

RUN chmod 755 /home/gitlab-runner/educo_dev.pem

 

# 환경변수 적용 스크립트

WORKDIR /home

RUN ./source.sh

 

LIST

'IT > 기타' 카테고리의 다른 글

Kubernetes 내부망 이미지 사용 시  (0) 2025.02.17
Kubernetes 설치 (트러블 슈팅 포함)  (0) 2025.02.17
Docker (nginx+tomcat+mysql) - 2  (0) 2025.02.17
Docker (nginx+tomcat+mysql) - 3  (0) 2025.02.17
Docker (nginx+tomcat+mysql) - 1  (0) 2025.02.17
📧 이메일 문의
by @ 2025 JGSHIN