2.1 KiB
2.1 KiB
Docker Deployment Guide
Building the Image
# 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 directoryIMS_TOKEN- Authentication token
Optional
DUPLICATE_BILL_TO_VENDOR- Whether to duplicate bills to vendor directoryCONVERT_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 syncS3_REGION- AWS region (default: us-east-1)S3_ACCESS_KEY_ID- AWS access keyS3_SECRET_ACCESS_KEY- AWS secret keyS3_KEY_PREFIX- S3 key prefix (default: jobs/)
Running with Docker Compose
- Update
docker-compose.ymlwith your configuration - Uncomment and configure S3 environment variables if needed
- Run:
docker-compose up -d
Manual Docker Run
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.