diff --git a/Dockerfile b/Dockerfile index 908d41d..1d8b1e4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,6 +34,9 @@ RUN adduser --system --uid 1001 nextjs # Copy necessary files COPY --from=builder /app/public ./public COPY --from=builder /app/prisma ./prisma +COPY --from=builder /app/prisma.config.ts ./prisma.config.ts +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/package.json ./package.json # Set the correct permission for prerender cache RUN mkdir .next @@ -43,9 +46,13 @@ RUN chown nextjs:nodejs .next COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static +# Copy entrypoint script +COPY --chown=nextjs:nodejs docker-entrypoint.sh ./ +RUN chmod +x docker-entrypoint.sh + # Create upload and data directories RUN mkdir -p uploads data -RUN chown -R nextjs:nodejs uploads data +RUN chown -R nextjs:nodejs uploads data prisma USER nextjs @@ -54,4 +61,6 @@ EXPOSE 3000 ENV PORT=3000 ENV HOSTNAME="0.0.0.0" -CMD ["node", "server.js"] +CMD ["./docker-entrypoint.sh"] + + diff --git a/docker-compose.yml b/docker-compose.yml index ac59446..d5a2242 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,9 @@ services: app: - image: gitea.krfcm.pl/krfcm/sitemap-builder:latest + image: 10.255.255.2:3000/krfcm/sitemap-builder:latest container_name: sitemap-builder restart: unless-stopped + user: "0:0" # Run as root to avoid permission issues ports: - "3050:3000" environment: @@ -12,7 +13,12 @@ services: - UPLOAD_DIR=/app/uploads volumes: # Persist SQLite database - - ./data:/app/data + - sitemap_data:/app/data # Persist uploaded files - - ./uploads:/app/uploads + - sitemap_uploads:/app/uploads + +volumes: + sitemap_data: + sitemap_uploads: + diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..147f008 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +# Ensure data directory exists and is writable +echo "Checking data directory..." +mkdir -p /app/data +touch /app/data/database.db 2>/dev/null || true + +# Run Prisma migrations to create/update database +echo "Running Prisma migrations..." +npx prisma migrate deploy || { + echo "Migration failed, trying db push..." + npx prisma db push --accept-data-loss +} + +# Start the application +echo "Starting Next.js server..." +exec node server.js