refactor: Use external Docker named volume for data persistence

Changes:
- Replace bind mount (./data) with external named volume (nlcc-data)
- Volume must be created before first run: docker volume create nlcc-data
- Improves portability and follows Docker best practices
- Better separation between code and data

Benefits:
- Data persists across container rebuilds and updates
- Easier backup and restore operations
- Platform-agnostic (works same on Linux/Windows/macOS)
- Managed by Docker's volume system
- No permission issues with bind mounts

README Updates:
- Added volume creation step to installation instructions
- Documented volume management commands (create, inspect, backup, restore)
- Added backup/restore examples using alpine container
- Clarified data persistence behavior

Note: Existing deployments using ./data bind mount will need to:
1. Backup existing data: cp -r ./data ./data-backup
2. Create volume: docker volume create nlcc-data
3. Restart container: docker-compose up -d
4. Copy data to volume if needed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-05 17:46:07 -05:00
parent d7ee2251a0
commit 3474ca7013
2 changed files with 34 additions and 3 deletions

View File

@@ -5,7 +5,7 @@ services:
ports:
- "3002:3000"
volumes:
- ./data:/app/data
- nlcc-data:/app/data
environment:
- NODE_ENV=production
- SITE_URL=https://nlcc.rydertech.us
@@ -20,3 +20,7 @@ services:
- EMAIL_PASSWORD=your-email-password
- EMAIL_FROM=New Life Christian Church <noreply@example.com>
restart: unless-stopped
volumes:
nlcc-data:
external: true