봇 업데이트 시 파일을 일일이 교체해야 하나요?

2026년 5월 14일·3개 메시지

이 글에서는 깃허브에 코드를 올린 뒤 실제 호스팅 환경에 변경 사항을 반영하는 방법을 정리한다. 디스코드 봇을 디스호스트에 호스팅할 때 자동 업데이트 설정과 수동 업데이트 방법, 의존성 변경 처리 방식까지 다룬다.

증상

깃허브에 새 커밋을 올렸는데 호스팅된 봇에 변경사항이 반영되지 않음. 호스팅 콘솔에서 재시작해도 코드가 갱신되지 않는 것처럼 보이거나, 또는 호스팅 환경에 들어가서 파일을 하나씩 교체해야 할지 고민됨.

원인

주된 원인 두 가지:

  • 자동 업데이트 기능이 비활성화되어 있어 깃 리포지토리의 최신 커밋을 자동으로 가져오지 않음.
  • 코드 변경에 의존성 추가/삭제가 포함되어 있어 단순 파일 동기화만으로는 동작이 달라짐(예: npm/pip 패키지 설치 필요).

디스호스트 환경에서는 Auto update가 1(true)로 설정되어 있으면 재시작 시 자동으로 리포지토리에서 파일을 가져온다. 그렇지 않으면 수동으로 갱신해야 한다.

해결 방법

1단계: Auto update 설정 확인 및 재시작

  1. 호스팅 콘솔 또는 설정 파일에서 Auto update 값을 확인. 값을 1 또는 true로 설정하면 재시작 시 깃허브의 최신 커밋을 자동으로 가져온다.
  2. 설정 변경 후 서비스 재시작을 수행하면 자동으로 파일을 가져오게 된다.

예: 호스팅 콘솔의 재시작 버튼을 클릭하거나, 서버에 SSH 접근 가능한 경우 다음과 같이 예시 명령을 사용한다(환경에 따라 다름).

# 예시: pm2로 관리하는 경우
pm2 restart my-bot

# 예시: systemd 서비스인 경우
sudo systemctl restart my-bot.service

# 예시: 도커 컨테이너인 경우
docker restart my-bot-container

2단계: Auto update가 꺼져 있거나 수동 갱신이 필요할 때

  • 깃으로 직접 당겨오기 (SSH 접속 가능할 때)
cd /path/to/project
git fetch origin
git checkout main        # 사용 중인 브랜치로 교체
git pull origin main
  • 파일 매니저 또는 SFTP로 업로드: 호스팅 환경에서 GUI 파일 업로드 제공 시 변경된 파일을 업로드.

  • 도커/컨테이너 기반이면 이미지 재빌드/풀

# docker-compose 예시
docker-compose pull
docker-compose up -d --build

의존성 변경 처리

코드 변경에 라이브러리 추가/삭제가 포함되면 파일 동기화만으로는 충분하지 않다. 갱신 후 의존성 설치를 반드시 수행해야 한다.

  • Node.js 예시
npm install
pm2 restart my-bot
  • Python 예시
pip install -r requirements.txt
sudo systemctl restart my-bot.service

자동 업데이트가 파일만 덮어쓰고 의존성 설치를 자동으로 수행하지 않는 경우가 있으므로, 의존성 변경 시 수동 설치 스텝을 추가한다.

변경 적용 확인

  • 로그 확인: 호스팅 콘솔의 로그를 확인하거나 journalctl, pm2 logs 등을 이용해 에러 발생 여부를 확인한다.
  • 기능 테스트: 디스코드 봇의 주요 명령을 호출해 정상 동작을 확인한다.

마무리

디스코드 봇을 디스호스트에서 운영할 때는 Auto update를 1(true)로 설정하면 재시작 시 깃허브에서 자동으로 파일을 가져온다. 자동 업데이트가 꺼져 있거나 의존성 변경이 있으면 수동으로 git pull, 의존성 설치, 서비스 재시작 등의 절차를 수행해야 한다.