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.
This commit is contained in:
Claude Owner
2026-05-27 20:54:00 +09:00
parent 1d383d9a03
commit 94a39e0d45
3 changed files with 40 additions and 5 deletions

35
.env.example Normal file
View File

@@ -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=[{}]

View File

@@ -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"]

View File

@@ -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 요구도 충족하지 못해 변경했다.)
## 동작 흐름 요약