Files
you-music/Dockerfile
T
2025-10-30 16:44:07 +11:00

61 lines
1.3 KiB
Docker

# Multi-stage build for frontend
FROM node:20-alpine AS frontend-builder
WORKDIR /app/frontend
# Copy frontend package files
COPY frontend/package*.json ./
RUN npm ci
# Copy frontend source
COPY frontend/ ./
RUN npm run build
# Final image
FROM python:3.13-slim
# Install system dependencies
RUN apt-get update && apt-get install -y \
ffmpeg \
curl \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy backend requirements
COPY backend/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy backend code
COPY backend/ ./backend/
# Copy frontend build from builder stage
COPY --from=frontend-builder /app/frontend/dist ./backend/static
# Create data directories with proper permissions
RUN mkdir -p /app/data/music \
/app/data/uploads \
/app/data/temp \
/app/data/cache/artists \
/app/data/cache/artist_images \
&& chmod -R 755 /app/data
# Expose port
EXPOSE 8000
# Environment variables
ENV PYTHONUNBUFFERED=1
ENV DATABASE_URL=sqlite+aiosqlite:///./data/youmusic.db
ENV MUSIC_DIR=/app/data/music
ENV UPLOAD_DIR=/app/data/uploads
ENV TEMP_DIR=/app/data/temp
ENV BASE_DIR=/app
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8000/ || exit 1
# Run the application
CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]