본문 바로가기
Docker

[Gitea] docker로 gitea 구축하기 (Feat. MariaDB)

by 모닝위즈 2025. 8. 18.
반응형

먼저 서버에는 docker와 docker-compose가 설치되어 있어야 한다.

 

 

1. docker-compose.yml을 작성하여 gitea와 mysql을 설치한다. 

networks:
  gitea-server-network:
    external: true

services:
  gitea:
    container_name: gitea
    image: gitea/gitea:latest
    restart: always
    volumes:
      - /sw/gitea-data:/data
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    ports:
      - "3000:3000"
      - "222:22"
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - DB_TYPE=mysql
      - DB_HOST=192.168.10.1:3306
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=gitea_mitw_jjangjjangman
      - GITEA__server__ROOT_URL=https://git.mitw.co.kr/
      - TZ=Asia/Seoul

    networks:
      - gitea-server-network

  mysql:
    image: mariadb:10.3
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: mitw_jjangjjangman
    ports:
      - "3306:3306"
    volumes:
      - /sw/mysql-data:/var/lib/mysql
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    restart: unless-stopped
    networks:
      - gitea-server-network

 

2. init.sql을 작성한다. (docker로 컨테이너가 올라오고 나서 서버가 시작할 때, 실행된다.)

#외부 접속 허용 ROOT
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'gitea_mitw_jjangjjangman' WITH GRANT OPTION;

#Gitea에서 사용할 계정 생성 및 스키마 생성
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'%' IDENTIFIED BY 'gitea';
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@localhost IDENTIFIED BY 'gitea';

create database gitea default character set utf8mb4 collate utf8mb4_general_ci;

#접속 권한 및 CRUD 권한 부여
grant select,insert,update,delete on gitea.* to gitea@localhost;
grant select,insert,update,delete on gitea.* to gitea@'%';

FLUSH PRIVILEGES;

 

3. 실행한다.

docker-compose up -d

 

* 주의할 점.

- Gitea 기본 URL을 잘못 입력했으면, /data/gitea/conf/app.ini 에서 line 20. 

  ROOT_URL 항목을 수정하고 docker restart gitea

 

- 그리고, 회원가입이 활성화되어 있다. 이를 막으려면 /data/gitea/conf/app.ini 에서 line 67. 

  DISABLE_REGISTRATION 항목을 true로 변경하고 docker restart gitea

 

- 가장 중요한 점...!!!!!

  > 반드시 Gitea 서버(컨테이너)의 /data가 docker 컨테이너 외부를 바라보도록 volume을 설정할 것.

  > 그렇지 않으면, 컨테이너 내리면 다 삭제됨.

  > 그리고, ROOT_URL, DISABLE_REGISTRATION 이거 백날 변경해봐야 컨테이너 재기동 시 되돌아간다.. 

     

돌아갈까봐 그래 돌아갈까봐..

 

 

댓글