[강좌] Docker로 Node.js 디스코드 봇을 운영해보자!

2022. 6. 24. 18:17·INFORMATION - 정보 창고/서버

인사말

Node.js로 개발된 디스코드 봇을 Docker로 운영하는 강좌입니다.

이 강좌를 통해 누구나 쉽게 디스코드 봇을 운영하면 좋겠습니다.

 

 

 

강좌

1. 먼저 Dockefile를 작성해주세요.

FROM node:16.15.1

RUN mkdir -p /node
WORKDIR /node

COPY package.json package-lock.json ./

RUN npm install -g npm@8.12.2
RUN npm install
RUN npm install ytdl-core@latest

WORKDIR /node/app

ENV NODE_ENV development

CMD [ "npm", "run", "musco" ]

1-1. node 이미지와 맞는 버전을 입력합니다.

전 해당 버전이 가장 문제없이 작동했습니다.

가벼운 버전을 원할 경우 alpine 버전을 이용해주시면 됩니다.

FROM node:16.15.1

1-2. node라는 폴더를 생성하고 작업폴더를 생성한 폴더로 지정합니다.

RUN mkdir -p /node
WORKDIR /node

1-3. 'package.json'와 'package-lock.json'를 복사해줍니다.

COPY package.json package-lock.json ./

1-4. 필요한 npm을 설치해줍니다.

원래는 package 파일을 복사해줬기 때문에 'RUN npm install'만 있어도 되지만 제 봇은 다른 부가가 필요하기 때문에 아래 코드로 작성되었습니다.

RUN npm install -g npm@8.12.2
RUN npm install
RUN npm install ytdl-core@latest

1-5. 작업 폴더를 '/node/app'으로 이동 후 파일을 복사해줍니다.

WORKDIR /node/app

1-6. 환경 변수를 'development'로 지정해줍니다.

ENV NODE_ENV development

1-7. 컨테이너 실행시 작동될 커맨드를 입력합니다.

대부분은 'npm run'만으로도 실행됩니다.

CMD [ "npm", "run", "musco" ]

 

2. 이 파일을 서버 내 봇 파일이 있는 폴더로 이동해주세요.

저같은 경우는 '/Server/Bot/Musco'라는 폴더에 있으니 이 폴더에 Dockerfile를 붙여넣기 해주시면 됩니다.

 

3. SSH를 실행 후 Dockerfile이 있는 폴더로 이동합니다.

 

4. SSH에서 다음 커맨드를 실행합니다.

'musco:1.0'은 이미지 이름과 버전을 지정해준거고 '.'은 경로를 지정해준겁니다.

docker build -t musco:1.0 .

5. 이미지 빌드가 끝났으면 docker-compose.yml도 작성해줍니다.

---
version: "2.1"
services:
  Discord-Musco:
    image: musco:1.0
    container_name: 'Discord-MuscoBot'
    hostname: 'Discord MuscoBot'
    network_mode: bridge
    volumes:
      - /Server/Bot/Musco:/node/app
    restart: unless-stopped

6. 이제 컨테이너 생성 후 실행해줍니다.

로그가 정상적으로 보인다면 봇 실행 성공입니다.

> musco@1.0 musco
> node musco.js


  ███╗   ███╗██╗   ██╗███████╗ ██████╗ ██████╗                               
  ████╗ ████║██║   ██║██╔════╝██╔════╝██╔═══██╗                              
  ██╔████╔██║██║   ██║███████╗██║     ██║   ██║                              
  ██║╚██╔╝██║██║   ██║╚════██║██║     ██║   ██║                              
  ██║ ╚═╝ ██║╚██████╔╝███████║╚██████╗╚██████╔╝                              
  ╚═╝     ╚═╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝                               
                                                                                
  
[Musco] | Logged in as Musco!

 

 

 

마무리

사실 강좌보단 그냥 제가 기억하는 용도로 적은거지만

댓글에 질문해주시면 친절하게 답변해드리겠습니다!

 

 

도움이 되셨다면 공감, 팔로우, 댓글 부탁드려요.^^
다른 곳에 공유시 출처를 꼭 남겨주세요!

저작자표시 비영리 변경금지 (새창열림)
'INFORMATION - 정보 창고/서버' 카테고리의 다른 글
  • [강좌] Proxmox에서 가상 네트워크망 구축
  • [강좌] Proxmox에서 노드에 디스크 패스스루
코네 (CodeName)
코네 (CodeName)
IT, 게임, 애니등 다양한 분야를 좋아하는 평범한 인간입니다.
  • 코네 (CodeName)
    CodeName의 잡다한 블로그
    코네 (CodeName)
  • 전체
    오늘
    어제
    • 분류 전체보기 (103)
      • STORY - 이야기 (22)
        • 일상(을 가장한 뻘끌) (8)
        • 소소한 이야기 (14)
      • Made by CodeName (62)
        • 소프트웨어 (0)
        • 자막 (58)
        • 소프트웨어 한글 번역 (2)
        • 기타 (2)
      • INFORMATION - 정보 창고 (18)
        • IT 이야기 (11)
        • 서버 (3)
        • 게임 팁 & 강좌 (0)
        • 노래 (1)
        • 모든 쇼핑의 팁 (1)
        • 기타 정보 (2)
      • DATA - 자료실 (1)
        • IT 자료 (1)
        • 게임 자료 (0)
        • 기타 자료 (0)
  • 블로그 메뉴

    • 홈
    • 공지사항
    • 방명록
    • 태그
    • 코네 유튜브
    • Github
  • 링크

    • 코네 유튜브
  • 공지사항

    • 블로그 포스트 업로드 안내
    • 블로그를 이전하였습니다.
  • 인기 글

  • 태그

    2021
    닌자라
    컴퓨터
    5000살 먹은 초식 드래곤 억울한 사룡 낙인
    완결
    BD
    한글
    ASS
    1분기
    비정기
    애니
    aimer
    서버
    블루레이
    2분기
    자작
    2022
    통합
    자막
    농민 관련 스킬만 올렸는데 어째서인지 강해졌다
    3분기
    헤이케모노가타리
    srt
    4분기
    치미모
    2023
    유튜브
    만성가
    나소흑전기
    OLM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
코네 (CodeName)
[강좌] Docker로 Node.js 디스코드 봇을 운영해보자!
상단으로

티스토리툴바