# =================== # Trove Development Services # =================== # Port allocation: # App: 8200 (frankenphp), 5175 (vite) # DB: 5433 (postgresql) # Redis: 6380 name: trove services: app: build: context: ../.. dockerfile: Dockerfile.dev container_name: trove_dev_app restart: unless-stopped ports: - "8200:8000" - "5175:5173" volumes: - ../..:/app - app_vendor:/app/vendor - app_node_modules:/app/node_modules environment: APP_NAME: "${APP_NAME:-Trove}" APP_ENV: "${APP_ENV:-local}" APP_DEBUG: "${APP_DEBUG:-true}" APP_URL: "${APP_URL:-http://localhost:8200}" DB_CONNECTION: pgsql DB_HOST: db DB_PORT: 5432 DB_DATABASE: "${DB_DATABASE:-trove}" DB_USERNAME: "${DB_USERNAME:-trove}" DB_PASSWORD: "${DB_PASSWORD:-trove}" REDIS_HOST: redis REDIS_PORT: 6379 SESSION_DRIVER: "${SESSION_DRIVER:-database}" CACHE_STORE: "${CACHE_STORE:-redis}" QUEUE_CONNECTION: "${QUEUE_CONNECTION:-redis}" MAIL_MAILER: "${MAIL_MAILER:-log}" depends_on: db: condition: service_healthy redis: condition: service_healthy networks: - trove-network db: image: postgres:17-alpine container_name: trove_dev_db hostname: db restart: unless-stopped ports: - "5433:5432" environment: POSTGRES_DB: "${DB_DATABASE:-trove}" POSTGRES_USER: "${DB_USERNAME:-trove}" POSTGRES_PASSWORD: "${DB_PASSWORD:-trove}" volumes: - db_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-trove}"] interval: 10s timeout: 5s retries: 5 start_period: 10s networks: - trove-network redis: image: redis:7-alpine container_name: trove_dev_redis hostname: redis restart: unless-stopped ports: - "6380:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 start_period: 5s networks: - trove-network networks: trove-network: driver: bridge volumes: db_data: redis_data: app_vendor: app_node_modules: