# 1. Build Go Backend FROM golang:1.22-alpine AS builder # SQLite 및 CGO 빌드에 필요한 패키지 설치 RUN apk add --no-cache gcc musl-dev WORKDIR /build # Cache go modules COPY backend/go.mod backend/go.sum ./ RUN go mod download COPY backend/ ./ # CGO_ENABLED=1 is required for sqlite3 RUN CGO_ENABLED=1 go build -ldflags="-s -w" -o main main.go # 2. Final Minimal Image (Python + Go binary + Frontend) FROM python:3.10-slim # 파이썬 출력 버퍼링을 비활성화하여 도커 로그에 즉각 표시되도록 설정합니다. ENV PYTHONUNBUFFERED=1 # Install system dependencies (ffmpeg is required for yt-dlp) RUN apt-get update && apt-get install -y \ ffmpeg \ ca-certificates \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # Install Python dependencies for worker COPY worker/requirements.txt ./worker/ RUN pip install --no-cache-dir -r worker/requirements.txt # Copy Go binary from builder COPY --from=builder /build/main ./main # Copy worker script COPY worker/ ./worker/ # Copy frontend COPY frontend/ ./frontend/ # Ensure directories exist RUN mkdir -p db downloads # Expose Go server port EXPOSE 3000 # Run the Go server command (which will also call the yt-dlp python script when needed) CMD ["./main"]