Deploying with Docker
AppStoreCat runs entirely in Docker for both development and production.
Development Environment
Section titled “Development Environment”The development environment (docker-compose.yml) runs 6 containers:
| Container | Image | Port |
|---|---|---|
appstorecat-server | Built from server/.docker/Dockerfile | 7460 |
appstorecat-web | Built from web/.docker/Dockerfile | 7461 |
appstorecat-scraper-ios | Built from scraper-ios/.docker/Dockerfile | 7462 |
appstorecat-scraper-android | Built from scraper-android/.docker/Dockerfile | 7463 |
appstorecat-mysql | mysql:8.4 | 7464 |
appstorecat-redis | redis:7-alpine | 6379 |
Starting the Development Environment
Section titled “Starting the Development Environment”make setup # First time onlymake dev # Start all servicesVolumes
Section titled “Volumes”./serveris mounted into the server container for live reload./webis mounted into the web container (with/app/node_modulesexcluded)./scraper-iosand./scraper-androidare mounted for live reload- MySQL and Redis data are persisted in named Docker volumes
Health Checks
Section titled “Health Checks”Health checks are configured for MySQL and Redis. The backend container waits for both to be healthy before starting (depends_on with service_healthy).
Production Environment
Section titled “Production Environment”The production environment (docker-compose.production.yml) uses pre-built images from Docker Hub.
Key Differences from Development
Section titled “Key Differences from Development”| Feature | Development | Production |
|---|---|---|
| Images | Built locally | Pre-built on Docker Hub (appstorecat/appstorecat-*) |
| Redis | Yes (queue, cache, rate limiting) | No (database queue, file cache) |
| Ports | Published (ports) | Internal only (expose) |
| Network | Local bridge | External dokploy-network + internal bridge |
| Restart | None | unless-stopped |
| Logging | Default | stderr driver |
| Queue driver | redis | database |
Production Environment Variables
Section titled “Production Environment Variables”In addition to the standard .env variables, production requires:
APP_ENV=productionAPP_DEBUG=falseAPP_VERSION=0.0.3QUEUE_CONNECTION=databaseLOG_CHANNEL=stderrBuilding Production Images
Section titled “Building Production Images”# Build and push multi-platform images for all servicesmake build-prod
# Full release: bump version, build, push, tagmake release v=0.0.4Images are built for the linux/amd64 and linux/arm64 platforms.
Networks
Section titled “Networks”The production environment uses two networks:
- dokploy-network (external) — managed by the Dokploy reverse proxy
- appstorecat (bridge) — internal service communication
Docker Commands
Section titled “Docker Commands”make ps # Show service statusmake logs # Follow all logsmake logs-server # Follow only server logsmake restart # Restart all servicesmake clean # Stop + remove volumesmake nuke # Full cleanup, including images