Skip to content

Deploying with Docker

AppStoreCat runs entirely in Docker for both development and production.

The development environment (docker-compose.yml) runs 6 containers:

ContainerImagePort
appstorecat-serverBuilt from server/.docker/Dockerfile7460
appstorecat-webBuilt from web/.docker/Dockerfile7461
appstorecat-scraper-iosBuilt from scraper-ios/.docker/Dockerfile7462
appstorecat-scraper-androidBuilt from scraper-android/.docker/Dockerfile7463
appstorecat-mysqlmysql:8.47464
appstorecat-redisredis:7-alpine6379
Terminal window
make setup # First time only
make dev # Start all services
  • ./server is mounted into the server container for live reload
  • ./web is mounted into the web container (with /app/node_modules excluded)
  • ./scraper-ios and ./scraper-android are mounted for live reload
  • MySQL and Redis data are persisted in named Docker volumes

Health checks are configured for MySQL and Redis. The backend container waits for both to be healthy before starting (depends_on with service_healthy).

The production environment (docker-compose.production.yml) uses pre-built images from Docker Hub.

FeatureDevelopmentProduction
ImagesBuilt locallyPre-built on Docker Hub (appstorecat/appstorecat-*)
RedisYes (queue, cache, rate limiting)No (database queue, file cache)
PortsPublished (ports)Internal only (expose)
NetworkLocal bridgeExternal dokploy-network + internal bridge
RestartNoneunless-stopped
LoggingDefaultstderr driver
Queue driverredisdatabase

In addition to the standard .env variables, production requires:

Terminal window
APP_ENV=production
APP_DEBUG=false
APP_VERSION=0.0.3
QUEUE_CONNECTION=database
LOG_CHANNEL=stderr
Terminal window
# Build and push multi-platform images for all services
make build-prod
# Full release: bump version, build, push, tag
make release v=0.0.4

Images are built for the linux/amd64 and linux/arm64 platforms.

The production environment uses two networks:

  • dokploy-network (external) — managed by the Dokploy reverse proxy
  • appstorecat (bridge) — internal service communication
Terminal window
make ps # Show service status
make logs # Follow all logs
make logs-server # Follow only server logs
make restart # Restart all services
make clean # Stop + remove volumes
make nuke # Full cleanup, including images