fix: Docker one-click deployment — all deps bundled, native modules, health check

- Multi-stage build: builder installs backend + frontend deps, compiles
- Production stage: npm ci --production rebuilds native modules (opus, sqlite3)
- FFmpeg bundled via ffmpeg-static (no apt install ffmpeg)
- .dockerignore prevents node_modules/dist from being copied
- docker-compose uses host network for TS3 UDP connectivity
- Named volume for persistent data
- Health check endpoint

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
saopig1andClaude Opus 4.6 committed 2026-03-30 13:20:00 +08:00
1 parent ea38636e9b
commit 74193ffbf0
3 files changed
+82 -16

No files matched your search

+18 -4
View File
@@ -1,4 +1,8 @@
version: '3.8'
# TSMusicBot — Docker Compose
# 一键部署:docker-compose up -d
#
# 所有依赖已内置(Node.js, FFmpeg, Opus 编码器)
# 无需安装任何额外软件
services:
tsmusicbot:
@@ -6,10 +10,20 @@ services:
context: ../..
dockerfile: scripts/docker/Dockerfile
container_name: tsmusicbot
ports:
- "3000:3000"
# Use host network so the bot can reach TS3 server on LAN
# If your TS3 server is on the same machine, this is required
network_mode: host
# If you prefer port mapping instead of host network, comment out
# network_mode and uncomment ports:
# ports:
# - "3000:3000" # WebUI
# - "9987:9987/udp" # TS3 voice (only if TS3 server is in another container)
volumes:
- ./data:/app/data
- tsmusicbot-data:/app/data
restart: unless-stopped
environment:
- NODE_ENV=production
volumes:
tsmusicbot-data:
driver: local