From 0c8cb78ad2d4ef61484d32b022cc90aa27d0b600 Mon Sep 17 00:00:00 2001 From: tigeren Date: Sat, 30 Aug 2025 20:12:15 +0000 Subject: [PATCH] [!!]refactor: optimize Docker configuration and update .dockerignore - Changed base image in Dockerfile to a smaller Alpine version for reduced size. - Updated package installation commands to use Alpine's package manager. - Enhanced .dockerignore to exclude additional files and directories, improving build efficiency. - Added new entries for media, database, and test files to .dockerignore. - Adjusted docker-compose.yml to use a simplified image name for clarity. --- .dockerignore | 92 ++++++++++++++++++++++++++++++-------- Dockerfile | 56 ++++++++++------------- docker/data/media.db | Bin 122880 -> 122880 bytes docker/docker-compose.yml | 2 +- 4 files changed, 98 insertions(+), 52 deletions(-) diff --git a/.dockerignore b/.dockerignore index 5621cea..2c8fede 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,34 +5,29 @@ yarn-debug.log* yarn-error.log* pnpm-debug.log* -# Next.js build output -.next -out +# Next.js +.next/ +out/ -# Production build +# Production +build dist -# Environment variables +# Environment files .env .env.local .env.development.local .env.test.local .env.production.local -# IDE and editor files +# IDE .vscode .idea *.swp *.swo -*~ -# OS generated files +# OS .DS_Store -.DS_Store? -._* -.Spotlight-V100 -.Trashes -ehthumbs.db Thumbs.db # Git @@ -40,14 +35,23 @@ Thumbs.db .gitignore # Docker -Dockerfile +Dockerfile* +docker-compose* .dockerignore -docker-compose.yml # Documentation README.md +docs/ *.md +# Tests +coverage/ +.nyc_output +*.test.js +*.test.ts +*.spec.js +*.spec.ts + # Logs logs *.log @@ -59,10 +63,60 @@ pids *.pid.lock # Coverage directory used by tools like istanbul -coverage +coverage/ + +# Dependency directories +jspm_packages/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt + +# Storybook build outputs +.out +.storybook-out # Temporary folders -tmp -temp +tmp/ +temp/ -public/thumbnails \ No newline at end of file +# Media files (these will be mounted as volumes) +data/ +media/ +public/thumbnails/ + +# Database files +*.db +*.sqlite +*.sqlite3 + +# Backup files +*.bak +*.backup \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 1946fc2..ec8cb86 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,75 +1,67 @@ -# Use official Node.js runtime as the base image -FROM node:22.18.0 AS base +# Use a smaller base image for the final runtime +FROM node:22.18.0-alpine AS base -# Rebuild the source code only when needed +# Build stage FROM base AS builder WORKDIR /app # Install build dependencies for native modules -RUN apt-get update && apt-get install -y \ +RUN apk add --no-cache \ python3 \ make \ g++ \ - libsqlite3-dev \ - && rm -rf /var/lib/apt/lists/* + sqlite-dev \ + ffmpeg-dev # Install pnpm globally RUN npm install -g pnpm -# Copy package files and install all dependencies (including dev dependencies) +# Copy package files and install all dependencies COPY package.json package-lock.json ./ -RUN pnpm install +RUN pnpm install # Copy source code COPY . . # Rebuild better-sqlite3 to ensure native bindings are compiled correctly -RUN pnpm rebuild better-sqlite3 || npm rebuild better-sqlite3 - -# Verify native bindings are compiled -RUN find /app/node_modules -name "better_sqlite3.node" -type f - -# Database file will be created at runtime via docker-compose - -# Create directories for media storage -RUN mkdir -p /app/data /app/media +RUN pnpm rebuild better-sqlite3 # Build the application RUN pnpm buildprod -# Production image, copy all the files and run next +# Production stage FROM base AS runner WORKDIR /app ENV NODE_ENV=production ENV NEXT_TELEMETRY_DISABLED=1 -# Install FFmpeg for media file analysis -RUN apt-get update && apt-get install -y \ +# Install only runtime dependencies +RUN apk add --no-cache \ ffmpeg \ - && rm -rf /var/lib/apt/lists/* + sqlite \ + && rm -rf /var/cache/apk/* -RUN groupadd --system --gid 1001 nodejs -RUN useradd --system --uid 1001 --gid nodejs nextjs +# Create user +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 --ingroup nodejs nextjs -# Create media directories -RUN mkdir -p /app/data /app/media +# Create necessary directories +RUN mkdir -p /app/data /app/media /app/public/thumbnails -# Ensure directories have correct permissions -RUN chown -R nextjs:nodejs /app/data /app/media - -# Copy built application +# Copy only the necessary files from builder COPY --from=builder --chown=nextjs:nodejs /app/public ./public COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static -# Copy node_modules to ensure native bindings are available + +# Copy the entire node_modules to ensure all native bindings are available COPY --from=builder --chown=nextjs:nodejs /app/node_modules ./node_modules # Rebuild native bindings for the production environment RUN npm rebuild better-sqlite3 -# Set up volume for persistent data -VOLUME ["/app/data", "/app/media"] +# Set correct permissions +RUN chown -R nextjs:nodejs /app/data /app/media /app/public # Switch to non-root user USER nextjs diff --git a/docker/data/media.db b/docker/data/media.db index 45e8f6637475675101b110b03be7a9ff064b1261..85eb35e56e755e18292346e4a01b1ae62c2247ff 100644 GIT binary patch delta 12495 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 delta 12401 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 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 4c0324f..7d86377 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: nextav: - image: ${REGISTRY_URL:-192.168.2.212:3000}/${IMAGE_NAME:-tigeren/nextav}:${IMAGE_TAG:-latest} + image: nextav:optimized container_name: nextav-app restart: unless-stopped ports: