Ubuntu

Docker에 설치된 Gitea에 systemd 설정

washble2 2026. 2. 24. 04:17

systemd 통해 아래와 같은 이점을 가질 수 있기에 설정을 해줍니다.

 

  • 프로세스 관리: systemctl start/stop/restart gitea로 쉽게 제어 가능
  • 자동 재시작: 프로세스가 죽으면 systemd가 알아서 다시 실행
  • 로그 관리: journalctl -u gitea로 로그 확인 가능
  • 보안성 강화: root가 아닌 gitea 사용자 권한으로 실행되도록 분리

 

1. 서비스 파일 생성

# 서비스 파일 생성
$ sudo vim /etc/systemd/system/gitea.service

 

 

 

 

 

2. 설정

[Unit]
Description=Gitea Service
After=docker.service
Requires=docker.service

[Service]
WorkingDirectory={gitea의 docker-compose.yml이 있는 위치}
# ex) WorkingDirectory=/home/user/gitea
ExecStart=/usr/bin/docker-compose -f gitea-compose.yml up
ExecStop=/usr/bin/docker-compose -f gitea-compose.yml down
Restart=always
User=root

[Install]
WantedBy=multi-user.target


# ExecStart는 systemd를 실행할 때 작동하는 명령어 입니다.
# ExecStop는 systemd를 정지시킬 때 작동하는 명령어 입니다.

 

# 추가정보 및 주의사항

# stop: 컨테이너만 중지
# /usr/bin/docker-compose -f gitea-compose.yml stop
# down: 컨테이너 중지 + 제거 + 네트워크까지 삭제
# /usr/bin/docker-compose -f gitea-compose.yml down
# 중지 제거 삭제까지 있으니 위험해 보이지만 그냥 docker올라간걸 멈추는것일 뿐입니다.


# 실행 시 -d 백그라운드 작업
$ sudo docker-compose -f gitea-compose.yml up -d
# 일반적으로 위와 같이 도커의 실행을 하는데 
# 문제는 -d로 백그라운드 모드로 컨테이너를 실행하면 systemd가 컨테이너를 띄운 뒤 바로 종료 되어 버립니다.
# 컨테이너를 띄웠고 계속 유지시킬 필요없기에 active 서비스가 아니라 판단되어 멈추는 것입니다.
# 따라서 -d를 빼고 작동 시켜야 active중임을 알고 유지시켜줍니다.
# 만약에 -d를 넣고 작동시킬 경우 RemainAfterExit=yes옵션을 넣어야 멈춰도 active로 유지합니다.

 

 

 

3. 실행

# systemd가 새 설정을 읽도록 갱신
$ sudo systemctl daemon-reload

# 서비스 재시작
$ sudo systemctl restart gitea.service

# 서비스 상태 및 로그 확인
$ sudo systemctl status gitea.service

# 서비스 재실행 시 gitea가 느리게 올라와서 작동 안하는 것처럼 보일 수 있는데
# sudo systemctl status gitea.service여기에서 계속 running 중이면 좀 더 기다리면 좋습니다.

'Ubuntu' 카테고리의 다른 글

Https요청 Ubuntu + Ngnix + SSL(Certbot) + Gitea  (0) 2026.02.23