etsy-finance-tracker/DOCKER_DEPLOYMENT.md
dlawler489 6038535896 Add Docker containerization support
Features:
- Multi-stage Dockerfile for optimized production builds
- Docker Compose configuration with health checks
- Health check endpoint for container monitoring
- Production environment configuration template
- Comprehensive deployment guide for Mac Mini
- Docker ignore file for efficient build context
- Security: Non-root user, proper signal handling
- Persistence: Data directory volume mounting
- Performance: Alpine Linux base, optimized layers
- Future-ready: MongoDB service configuration (commented)

Deployment:
- Simple 'docker-compose up' deployment
- Automatic health monitoring and restart policies
- Persistent data storage with volume mounts
- Port configuration and environment customization
- Complete troubleshooting and management guide
2026-04-20 19:54:37 +10:00

183 lines
No EOL
3.9 KiB
Markdown

# Docker Deployment Guide for Mac Mini
This guide will help you deploy the Etsy Finance Tracker on your Mac Mini using Docker.
## Prerequisites
1. **Install Docker Desktop** on your Mac Mini:
```bash
# Option 1: Download from Docker website
# Go to https://docs.docker.com/desktop/mac/install/
# Option 2: Install with Homebrew (if available)
brew install --cask docker
```
2. **Install Git** (if not already installed):
```bash
brew install git
```
## Deployment Steps
### 1. Clone the Repository
```bash
git clone https://github.com/dlawler489/etsy-finance-tracker.git
cd etsy-finance-tracker
```
### 2. Prepare Your Data
```bash
# Create the data directory structure
mkdir -p data/{csv,pdf,spreadsheets}
# Copy your business files to the data directory
# Example:
# cp ~/Documents/BusinessData/*.csv data/csv/
# cp ~/Documents/BusinessData/*.pdf data/pdf/
# cp ~/Documents/BusinessData/*.xlsx data/spreadsheets/
```
### 3. Configure Environment (Optional)
```bash
# Copy the production environment template
cp server/.env.production server/.env
# Edit the environment file if needed
nano server/.env
```
### 4. Build and Run with Docker Compose
```bash
# Build and start the application
docker-compose up --build -d
# View logs
docker-compose logs -f
# Check status
docker-compose ps
```
### 5. Access Your Application
- **Web Interface**: http://localhost:3000
- **API Health Check**: http://localhost:3000/health
## Management Commands
### Start/Stop the Application
```bash
# Start
docker-compose up -d
# Stop
docker-compose down
# Restart
docker-compose restart
```
### View Logs
```bash
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f etsy-tracker
```
### Update the Application
```bash
# Pull latest code
git pull origin main
# Rebuild and restart
docker-compose down
docker-compose up --build -d
```
### Backup Your Data
```bash
# Your business data in the data/ directory is automatically persisted
# To backup:
tar -czf etsy-tracker-backup-$(date +%Y%m%d).tar.gz data/
```
## Troubleshooting
### Check Application Health
```bash
# Test the health endpoint
curl http://localhost:3000/health
# Check container logs
docker-compose logs etsy-tracker
```
### Common Issues
1. **Port Already in Use**:
```bash
# Change port in docker-compose.yml
ports:
- "3001:3000" # Change 3000 to 3001
```
2. **Permission Issues**:
```bash
# Fix data directory permissions
sudo chown -R $(whoami):$(whoami) data/
```
3. **Memory Issues**:
```bash
# Add memory limits to docker-compose.yml
deploy:
resources:
limits:
memory: 512M
```
## File Structure
Your deployment will look like this:
```
etsy-finance-tracker/
├── data/ # Your business data (persistent)
│ ├── csv/ # CSV files
│ ├── pdf/ # PDF documents
│ └── spreadsheets/ # Excel files
├── docker-compose.yml # Container orchestration
├── Dockerfile # Container configuration
└── ... (application code)
```
## Security Notes
- The `data/` directory contains your sensitive business files
- This directory is mounted as a volume and persists between container restarts
- Never commit the `data/` directory to git
- Change default passwords in `.env` file for production use
## Performance Optimization
For better performance on Mac Mini:
1. **Allocate more resources to Docker Desktop**:
- Open Docker Desktop preferences
- Go to Resources → Advanced
- Increase Memory to at least 4GB
- Increase CPU to at least 2 cores
2. **Enable BuildKit** for faster builds:
```bash
export DOCKER_BUILDKIT=1
```
## Support
If you encounter issues:
1. Check the logs: `docker-compose logs`
2. Verify Docker is running: `docker version`
3. Check port availability: `lsof -i :3000`
4. Review the troubleshooting section above