Files
bodyshop-media-server/docker-create.md
2025-10-31 15:43:22 -07:00

81 lines
2.1 KiB
Markdown

# Docker Deployment Guide
## Building the Image
```bash
# Build latest version
docker build . -t imexonline/media-server:latest -t imexonline/media-server:1.0
# Build beta version
docker build . -t imexonline/media-server:beta
```
## Docker Image Features
The Docker image includes:
- Node.js 22 Alpine base
- AWS CLI v2 for S3 sync functionality
- GraphicsMagick, ImageMagick, and FFmpeg for media processing
- Redis for background job processing
- PM2 for process management
- PST timezone configuration for scheduled tasks
## Environment Variables
### Required
- `MEDIA_PATH` - Path to media storage directory
- `IMS_TOKEN` - Authentication token
### Optional
- `DUPLICATE_BILL_TO_VENDOR` - Whether to duplicate bills to vendor directory
- `CONVERT_QUALITY` - Image conversion quality (0.0-1.0)
- `KEEP_CONVERTED_ORIGINALS` - Whether to keep original files after conversion
### S3 Sync (Optional)
- `S3_BUCKET_NAME` - S3 bucket name for daily sync
- `S3_REGION` - AWS region (default: us-east-1)
- `S3_ACCESS_KEY_ID` - AWS access key
- `S3_SECRET_ACCESS_KEY` - AWS secret key
- `S3_KEY_PREFIX` - S3 key prefix (default: jobs/)
## Running with Docker Compose
1. Update `docker-compose.yml` with your configuration
2. Uncomment and configure S3 environment variables if needed
3. Run: `docker-compose up -d`
## Manual Docker Run
```bash
docker run -d \
--name bodyshop-media-server \
-p 8000:8000 \
-v "/path/to/media:/media" \
-e MEDIA_PATH=/media \
-e IMS_TOKEN=your-token \
-e S3_BUCKET_NAME=your-bucket \
-e S3_ACCESS_KEY_ID=your-key \
-e S3_SECRET_ACCESS_KEY=your-secret \
imexonline/media-server:latest
```
## S3 Sync in Docker
The S3 sync functionality works automatically in Docker:
- AWS CLI v2 is pre-installed
- Timezone is set to PST for midnight scheduling
- Daily sync runs at midnight PST automatically
- Check sync status via API: `GET /s3-sync/status`
## Health Checks
- Main health check: `GET /health`
- Application status: `GET /` (requires token)
- S3 sync status: `GET /s3-sync/status` (requires token)
## Logs
View container logs: `docker logs bodyshop-media-server`
The application uses structured logging with daily rotation.