mirror of
https://github.com/xpltdco/media-rip.git
synced 2026-04-03 02:53:58 -06:00
Dockerfile (multi-stage): - Stage 1: Node 22 builds frontend (npm ci + npm run build) - Stage 2: Python 3.12 installs backend deps - Stage 3: Slim runtime with ffmpeg + deno (yt-dlp needs both) - Non-root user (mediarip), healthcheck, PYTHONUNBUFFERED - Volumes: /downloads (media), /data (SQLite DB) docker-compose.example.yml: - Caddy reverse proxy with automatic TLS via Let's Encrypt - Separate Caddyfile.example for domain configuration - Health-dependent startup ordering - Environment variables for admin setup CI/CD (.github/workflows/): - ci.yml: backend lint+test, frontend typecheck+test, Docker smoke build. Runs on PRs and pushes to main. - publish.yml: multi-platform build (amd64+arm64), pushes to ghcr.io/xpltd/media-rip on v*.*.* tags. Semantic version tags (v1.0.0 → latest + 1.0.0 + 1.0 + 1). Auto GitHub Release. .dockerignore: excludes dev artifacts, .gsd/, node_modules/, .venv/
29 lines
481 B
TypeScript
29 lines
481 B
TypeScript
/// <reference types="vitest" />
|
|
import { defineConfig } from 'vite'
|
|
import vue from '@vitejs/plugin-vue'
|
|
|
|
export default defineConfig({
|
|
plugins: [vue()],
|
|
resolve: {
|
|
alias: {
|
|
'@': '/src',
|
|
},
|
|
},
|
|
server: {
|
|
port: 5173,
|
|
proxy: {
|
|
'/api': {
|
|
target: 'http://localhost:8001',
|
|
changeOrigin: true,
|
|
},
|
|
},
|
|
},
|
|
build: {
|
|
outDir: 'dist',
|
|
sourcemap: true,
|
|
},
|
|
test: {
|
|
globals: true,
|
|
environment: 'jsdom',
|
|
},
|
|
})
|