From 3e6d479ea6a7c6f4f6683ea704d15d12c811e111 Mon Sep 17 00:00:00 2001 From: Joshua Ryder Date: Wed, 5 Nov 2025 17:57:25 -0500 Subject: [PATCH] refactor: Use Docker Compose managed volume with project prefix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes: - docker-compose.yml: Change from external volume to managed volume - Volume name: nlcc-data → data - Docker Compose auto-prefixes: nlcc-itinerary_data - Remove external: true flag - Volume created automatically on first up - README.md: Update all volume references - Installation: Remove manual volume creation step - Volume name: nlcc-data → nlcc-itinerary_data - Add note about automatic creation - Update all backup/restore/inspect commands Benefits: - No manual volume creation required - Docker Compose manages lifecycle automatically - Project-scoped volume naming (nlcc-itinerary_data) - Cleaner deployment process (one less step) - Volume automatically created on docker-compose up - Consistent with Docker Compose best practices The volume will be created as "nlcc-itinerary_data" where: - nlcc-itinerary = project directory name - data = volume name defined in docker-compose.yml 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- README.md | 23 +++++++++-------------- docker-compose.yml | 5 ++--- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 814d5ba..f249c7a 100644 --- a/README.md +++ b/README.md @@ -87,16 +87,13 @@ cd nlcc-itinerary - Configure email settings (required for password resets) - Optionally set `ADMIN_USERNAME` and `ADMIN_PASSWORD` (otherwise auto-generated) -3. Create the external Docker volume for data persistence: -```bash -docker volume create nlcc-data -``` - -4. Build and run with Docker Compose: +3. Build and run with Docker Compose: ```bash docker-compose up -d --build ``` +The Docker volume will be automatically created as `nlcc-itinerary_data`. + The application will be available at `http://localhost:3002` (or your configured port) **Important**: The `SITE_URL` must be set correctly for QR codes to work. This should be the public URL where your application is accessible (e.g., `https://church.example.com`). @@ -315,28 +312,26 @@ docker exec -it nlcc-itinerary sh ## Data Persistence -The SQLite database is stored in a Docker named volume (`nlcc-data`) which is mounted to `/app/data` in the container. This ensures: +The SQLite database is stored in a Docker named volume (`nlcc-itinerary_data`) which is mounted to `/app/data` in the container. This ensures: - Data persists across container restarts and rebuilds - Better portability across different environments - Easier backup and restore operations - Managed by Docker volume system +- Automatic creation on first `docker-compose up` **Volume Management Commands**: ```bash -# Create the volume (required before first run) -docker volume create nlcc-data - # Inspect volume location and details -docker volume inspect nlcc-data +docker volume inspect nlcc-itinerary_data # Backup the database -docker run --rm -v nlcc-data:/data -v $(pwd):/backup alpine tar czf /backup/nlcc-backup.tar.gz -C /data . +docker run --rm -v nlcc-itinerary_data:/data -v $(pwd):/backup alpine tar czf /backup/nlcc-backup.tar.gz -C /data . # Restore from backup -docker run --rm -v nlcc-data:/data -v $(pwd):/backup alpine tar xzf /backup/nlcc-backup.tar.gz -C /data +docker run --rm -v nlcc-itinerary_data:/data -v $(pwd):/backup alpine tar xzf /backup/nlcc-backup.tar.gz -C /data # Remove volume (WARNING: deletes all data!) -docker volume rm nlcc-data +docker volume rm nlcc-itinerary_data ``` ## License diff --git a/docker-compose.yml b/docker-compose.yml index 556e42f..ab35605 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: ports: - "3002:3000" volumes: - - nlcc-data:/app/data + - data:/app/data environment: - NODE_ENV=production - SITE_URL=https://church.example.com @@ -22,5 +22,4 @@ services: restart: unless-stopped volumes: - nlcc-data: - external: true + data: