Files
make_video_site/.dockerignore
Claude (owner) 83b391c0a8 build: add Dockerfile that compiles better-sqlite3 in build stage
도커 빌드가 `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>
2026-06-01 21:39:53 +09:00

53 B