도커 빌드가 `RUN npm install` 에서 better-sqlite3 네이티브 빌드 실패로 죽던 문제 해결. 근본 원인: - 베이스가 Alpine(musl) 이라 better-sqlite3 prebuilt 바이너리가 없음 (prebuild-install: "No prebuilt binaries found ... libc=musl"). - node-gyp 풀 빌드로 폴백하는데 이미지에 make/g++/python3 가 없어 "not found: make" 로 실패. 해결: - 멀티스테이지 Dockerfile 추가. build 스테이지에 python3/make/g++ 를 깔아 better-sqlite3 를 소스에서 항상 컴파일하고, `npm prune --omit=dev` 로 정리한 node_modules(컴파일된 .node 포함)를 runtime 스테이지로 복사. runtime 엔 빌드 체인이 없어 가볍고, prebuilt 존재 여부에 의존하지 않음. - glibc(debian-slim) 베이스라 musl 갭 자체를 회피. 번들 yt-dlp 표준 바이너리도 glibc 에서 동작. - runtime 에 ffmpeg/ffprobe(트림·60fps·FHD 변환) + yt-dlp(릴리스 바이너리) 설치. data 를 VOLUME 으로 노출, 3000 포트 EXPOSE. - .dockerignore 로 node_modules/dist/data/.git/.env 등 컨텍스트 제외. 검증 (로컬 docker 29.4.1): - `docker build` 성공 (better-sqlite3 컴파일 통과) - 컨테이너 기동 → `GET /` HTTP 200 - ffmpeg 5.1.9 / ffprobe 5.1.9 / yt-dlp 2026.03.17 / better-sqlite3 in-memory 쿼리 모두 정상 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
9 lines
53 B
Plaintext
9 lines
53 B
Plaintext
node_modules
|
|
dist
|
|
bin
|
|
data
|
|
.git
|
|
.env
|
|
*.log
|
|
.DS_Store
|