From 94a39e0d455b90e83f4e2c30664a2e693108d2be Mon Sep 17 00:00:00 2001 From: Claude Owner Date: Wed, 27 May 2026 20:54:00 +0900 Subject: [PATCH] chore(docker): switch to node:22-bookworm-slim and add .env.example - Dockerfile base now node:22-bookworm-slim (glibc) so better-sqlite3 uses prebuilt binaries and node-gyp/python build deps are no longer required. Also satisfies @discordjs/voice node>=22.12 engine req. - Drop redundant `mkdir -p dist` (build script handles it). - Add .env.example covering TOKEN, APPID, PREFIX, DBPATH, GUILDID, CHZZK_NID_AUT/SES, SIGNATURE_HOST, TTSPATH, DEV, DEBUG, REPLACETEXT. - README: update base image note. --- .env.example | 35 +++++++++++++++++++++++++++++++++++ Dockerfile | 8 ++++---- README.md | 2 +- 3 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..8f6c7bf --- /dev/null +++ b/.env.example @@ -0,0 +1,35 @@ +# Discord 봇 토큰 +TOKEN= + +# Discord 애플리케이션 ID +APPID= + +# 명령어 prefix (예: !) +PREFIX=! + +# SQLite DB 파일 경로 (예: ./db/tts.db) +DBPATH=./db/tts.db + +# 개발 길드 ID. DEV=true 일 때 슬래시 명령이 이 길드에만 등록되고, +# `npm run prod` 시 이 길드의 기존 명령은 먼저 wipe 된 뒤 전역 등록 +GUILDID= + +# 치지직(Chzzk) 인증 쿠키 +CHZZK_NID_AUT= +CHZZK_NID_SES= + +# 시그니처 서버 host:port (선택, 미설정 시 192.168.10.5:2967) +SIGNATURE_HOST= + +# TTS 외부 경로 (선택, 현재 호출처 없음. 향후 사용 대비 환경변수만 받아둠) +TTSPATH= + +# true 면 글로벌 대신 GUILDID 에만 슬래시 등록 (선택, 기본 false) +DEV=false + +# true 면 명령어 오류 스택을 콘솔에 출력 (선택, 기본 false) +DEBUG=false + +# 치환 사전(JSON 배열). 기본 사전(def_replaceObj)과 병합 (선택) +# 예: REPLACETEXT=[{"ㅋㅋ":"크크"}] +REPLACETEXT=[{}] diff --git a/Dockerfile b/Dockerfile index 768468c..d22860b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,8 @@ -FROM node:20-alpine +FROM node:22-bookworm-slim -RUN apk add --no-cache ffmpeg +RUN apt-get update \ + && apt-get install -y --no-install-recommends ffmpeg \ + && rm -rf /var/lib/apt/lists/* WORKDIR /app @@ -10,8 +12,6 @@ RUN npm install COPY . . -RUN mkdir -p dist - RUN npm run build CMD ["npm", "run", "start"] diff --git a/README.md b/README.md index 29a8a74..fc91fe7 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ docker build -t tts_bot . docker run --env-file .env -v $(pwd)/db:/app/db tts_bot ``` -Dockerfile은 `node:20-alpine` 기반이며 `ffmpeg`을 설치한다. +Dockerfile은 `node:22-bookworm-slim` 기반이며 `ffmpeg`을 설치한다. (이전 `node:20-alpine` 은 musl 환경이라 `better-sqlite3` prebuilt 가 없어 node-gyp/python 빌드 의존성이 필요했고, `@discordjs/voice` 의 node>=22 요구도 충족하지 못해 변경했다.) ## 동작 흐름 요약