Profile picture

[Docker] Gitea 서버 구축

JaehyoJJAng2023년 06월 17일

Gitea Vs Gitlab

1. 목적 및 설계 철학

  • Gitea: 경량화된 Git 서비스로, 빠른 성능과 낮은 리소스 요구 사항을 목표로 함.
    • 간단한 설치와 유지 관리 제공, 주요 기능은 Git 저장소 관리에 집중
  • Gitlab: 더 많은 기능과 통합 도구를 제공하는 풀 스택 DevOps 플랫폼.
    • 코드 저장소외에도 CI/CD, 코드 리뷰, 이슈 추적, 위키, 보안 기능 등을 포함함.

2. 성능 및 리소스 요구 사항

  • Gitea: 적은 메모리와 CPU를 사용하며 가벼운 서버 환경에서도 원활하게 동작함.
    • 설치 및 배포가 매우 간단하고 Docker 이미지 또한 매우 가벼움.
  • Gitlab: 다양한 기능을 제공하지만 그만큼 상대적으로 높은 리소스(메모리 & CPU)를 요구함.
    • 특히 Gitlab의 다양한 통합 기능을 모두 사용한다면 더 많은 리소스가 필요함.

<br.

3. 기능 제공

  • Gitea: 기본적인 Git 저장소 관리, 이슈 트래킹, 간단한 CI/CD 기능 등 주로 Github의 핵심 기능에 초점이 맞춰져 있음.
  • Gitlab: GitLab CI/CD, Container Registry, 코드 품질 분석, 보안 스캔, 인프라 자동화 등 많은 DevOps 기능을 포함함.
    • 이로 인해 단일 플랫폼에서 개발 라이프사이클을 관리하기에 매우 좋음.

4. 확장성

  • Gitea: 단순하고 가벼운 구조로 인해 소규모 팀이나 프로젝트에 적합
    • 대규모 환경에서는 기능 확장이나 플러그인 활용에 한계가 명확함.
  • GitLab: 엔터프라이즈급 확장성과 기능을 제공하며, 다양한 확장 기능을 위한 앱과 플러그인을 지원함.

Gitea를 쓰는 이유

사내용 Git 서버를 도입하려고 오픈소스를 찾아보던 중에 GiteaGitlab를 발견하게 되었다.

대규모 환경이 아니였고 단순히 버전 관리만을 목적으로 하고 있었기에

무거운 Gitlab 보다는 Gitea를 선택하였다.

관련 예제 또한 많이 나와있는 상태여서 나쁘지 않은 선택인 것 같다.


작고 경량화된 환경 에서 git 저장소 관리만 필요하고 빠른 설정 및 유지보수를 원한다면 Gitea가 좋은 선택이고,

엔터프라이즈급 기능과 DevOps 통합 이 필요하고 높은 리소스를 감당할 수 있는 서버를 보유하고 있다면 Gitlab이 더 나은 선택이다.

물론, 관리자의 재량에 달렸다.


설치


먼저 gitea 프로젝트를 위한 디렉토리 하나를 생성하자.

$ mkdir -p /home/$USER/gitea/data

그리고 vi를 사용하여 docker-compose.yaml 파일을 아래와 같이 작성하자.

$ cd /home/$USER/gitea
$ vi docker-compose.yaml

docker-compose.yaml

networks:
  gitea:
    external: false
    driver: bridge

volumes:
  gitea-data: {}

services:
  server:
    image: gitea/gitea:1.22.2
    container_name: gitea
    depends_on:
      - db
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=mysql
      - GITEA__database__HOST=db:3306
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"

  db:
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - type: volume
        source: gitea-data
        target: /var/lib/mysql

DB의 경우 MySQL 또는 PostgreSQL을 선택할 수 있는데 자세한 yaml은 공식 설치 가이드를 참고하도록 하자.


실행

1. docker-compose up

$ docker-compose up -d --build

2. http://{gitea_server_ip}:3000 접속


3. 초기 설정 화면 확인 후 설치하기 클릭
image
시간이 조금 걸릴 수 있다. 문제가 생긴 것은 아니니 기다려보자.

불안하다면 docker-compose logs -f server로 gitea 서버 로그를 확인해보도록 하자.


4. 계정 생성
image


5. 메인 화면
image


Loading script...