Docs
Run from Docker Hub images
Use docker-compose.prod.yml to start GIF Creator from the published Docker Hub images.
Overview
The repository includes docker-compose.prod.yml for running GIF Creator directly from the published Docker Hub images instead of building locally.
What this file does
docker-compose.prod.yml starts three services:
apifromgarrardkitchen/gif-creator-api:latestencoderfromgarrardkitchen/gif-creator-encoder:latestwebfromgarrardkitchen/gif-creator-web:latest
It also mounts a persistent gif_data volume and configures the production connection string, storage path, and internal service URLs.
Required environment
Set GH_TOKEN before you start the stack so AI blur detection can call the GitHub Models API.
Create a GitHub Personal Access Token that includes the read:models scope:
- Open GitHub and go to Settings.
- Open Developer settings.
- Choose Personal access tokens.
- Create a new token and enable the
read:modelsscope. - Copy the token and export it as
GH_TOKENbefore starting the stack.
Do not commit this token into source control. Keep it in your shell environment or a local .env file that is not checked in.
export GH_TOKEN=ghp_your_token_here
docker compose -f docker-compose.prod.yml up -d
The services will come up on:
- Frontend:
http://localhost:8001 - API:
http://localhost:5232 - Swagger:
http://localhost:5232/swagger
Included production compose file
services:
api:
image: garrardkitchen/gif-creator-api:latest
container_name: gif-creator-api
restart: unless-stopped
volumes:
- gif_data:/data
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ConnectionStrings__DefaultConnection=Data Source=/data/gifcreator.db
- Storage__BasePath=/data/storage
- Ai__GitHubToken=${GH_TOKEN}
- Ai__DefaultModelId=gpt-4o
- Ai__CropLeftPercent=37
- Ai__CropTopPercent=28
- Cors__AllowedOrigins=http://localhost
- Encoder__BaseUrl=http://encoder:8002
- Api__InternalBaseUrl=http://api:8002
ports:
- "5232:8002"
depends_on:
- encoder
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8002/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
encoder:
image: garrardkitchen/gif-creator-encoder:latest
container_name: gif-creator-encoder
restart: unless-stopped
volumes:
- gif_data:/data
environment:
- ASPNETCORE_ENVIRONMENT=Production
- Storage__BasePath=/data/storage
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8002/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
web:
image: garrardkitchen/gif-creator-web:latest
container_name: gif-creator-web
restart: unless-stopped
depends_on:
- api
ports:
- "8001:80"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3
volumes:
gif_data:
driver: local
When to use this path
Use docker-compose.prod.yml when you want:
- the quickest local trial of the full stack
- a demo environment without a local .NET or Node build
- to stay aligned with the images published from release tags