services: tracearr: build: context: .. dockerfile: docker/Dockerfile image: ghcr.io/connorgallopo/tracearr:latest ports: - "${PORT:-3000}:3000" environment: - NODE_ENV=production - PORT=3000 - HOST=0.0.0.0 - TZ=${TZ:-America/New_York} - DATABASE_URL=postgres://tracearr:${DB_PASSWORD:-tracearr}@timescale:5432/tracearr - REDIS_URL=redis://redis:6379 - JWT_SECRET=${JWT_SECRET:?JWT_SECRET is required} - COOKIE_SECRET=${COOKIE_SECRET:?COOKIE_SECRET is required} - CORS_ORIGIN=${CORS_ORIGIN:-*} - LOG_LEVEL=${LOG_LEVEL:-info} # Uncomment for TestFlight/beta testing: allows reusable tokens, no expiry, unlimited devices # - MOBILE_BETA_MODE=true depends_on: timescale: condition: service_healthy redis: condition: service_healthy restart: unless-stopped networks: - tracearr-network timescale: build: context: . dockerfile: Dockerfile.timescale image: tracearr-timescale:latest environment: - POSTGRES_USER=tracearr - POSTGRES_PASSWORD=${DB_PASSWORD:-tracearr} - POSTGRES_DB=tracearr volumes: - timescale_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U tracearr"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped networks: - tracearr-network redis: image: redis:7-alpine command: redis-server --appendonly yes volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped networks: - tracearr-network networks: tracearr-network: driver: bridge volumes: timescale_data: redis_data: