Fix monitor.js missing from Docker image and SQLITE_CANTOPEN errors

- Copy monitor.js into the standalone build stage (was missing entirely)
- Remove node-fetch require — Node 18 has global fetch built-in
- Switch from bind mount (./data) to named volume (dashboard-data) so
  Docker manages permissions correctly for the nextjs user

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Shivam Patel
2026-02-09 01:01:12 -05:00
parent d5ab2db926
commit 859602a03e
3 changed files with 7 additions and 3 deletions

View File

@@ -47,6 +47,8 @@ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
# Create data directory for SQLite # Create data directory for SQLite
RUN mkdir -p /app/data && chown nextjs:nodejs /app/data RUN mkdir -p /app/data && chown nextjs:nodejs /app/data
# Copy monitor script and startup script
COPY --from=builder --chown=nextjs:nodejs /app/monitor.js ./
COPY --chown=nextjs:nodejs start.sh ./ COPY --chown=nextjs:nodejs start.sh ./
RUN chmod +x start.sh RUN chmod +x start.sh

View File

@@ -11,5 +11,8 @@ services:
- NODE_ENV=production - NODE_ENV=production
- DB_PATH=/app/data/dashboard.db - DB_PATH=/app/data/dashboard.db
volumes: volumes:
- ./data:/app/data - dashboard-data:/app/data
- /server_storage:/server_storage:ro - /server_storage:/server_storage:ro
volumes:
dashboard-data:

View File

@@ -1,7 +1,6 @@
const sqlite3 = require('sqlite3'); const sqlite3 = require('sqlite3');
const { open } = require('sqlite'); const { open } = require('sqlite');
const fetch = require('node-fetch'); // Native fetch in Node 18, but let's be safe or use global fetch // Node 18+ has global fetch built-in
// Node 18 has global fetch, so we don't need node-fetch if running with node 18
const SERVICES = [ const SERVICES = [
{ name: 'Website', url: 'https://www.akkolli.net' }, { name: 'Website', url: 'https://www.akkolli.net' },