인사말
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!
마무리
사실 강좌보단 그냥 제가 기억하는 용도로 적은거지만
댓글에 질문해주시면 친절하게 답변해드리겠습니다!
도움이 되셨다면 공감, 팔로우, 댓글 부탁드려요.^^
다른 곳에 공유시 출처를 꼭 남겨주세요!