Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled
46 lines
1.2 KiB
Docker
46 lines
1.2 KiB
Docker
# 1. Build Go Backend
|
|
FROM golang:1.22-alpine AS builder
|
|
# Cache go modules
|
|
COPY backend/go.mod backend/go.sum ./backend/
|
|
RUN cd backend && go mod download
|
|
|
|
COPY backend/ ./backend/
|
|
# We'll build the go binary inside the backend dir and put it in /app/main. Remove debug info for smaller binary.
|
|
RUN cd backend && CGO_ENABLED=1 go build -ldflags="-s -w" -o /app/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 /app/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"]
|