# 🔧 Development Docker Compose # Services only - apps run locally via 'pnpm dev' version: '3.8' services: # PostgreSQL Development Database postgres: image: postgres:17-alpine container_name: portal-dev-postgres ports: - "5432:5432" environment: POSTGRES_DB: portal_dev POSTGRES_USER: dev POSTGRES_PASSWORD: dev POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C" volumes: - postgres_dev_data:/var/lib/postgresql/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U dev -d portal_dev"] interval: 10s timeout: 5s retries: 5 start_period: 30s networks: - dev-network # Redis Development Cache redis: image: redis:8-alpine container_name: portal-dev-redis ports: - "6379:6379" volumes: - redis_dev_data:/data restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 5 networks: - dev-network command: > redis-server --appendonly yes --maxmemory 128mb --maxmemory-policy noeviction # Database Administration Tool (Optional) adminer: image: adminer:4-standalone container_name: portal-dev-adminer ports: - "8080:8080" environment: ADMINER_DEFAULT_SERVER: postgres ADMINER_DESIGN: pepa-linha-dark restart: unless-stopped depends_on: postgres: condition: service_healthy networks: - dev-network profiles: - "tools" # Redis Management Tool (Optional) redis-commander: image: rediscommander/redis-commander:latest container_name: portal-dev-redis-commander ports: - "8081:8081" environment: REDIS_HOSTS: "dev:redis:6379" HTTP_USER: admin HTTP_PASSWORD: dev restart: unless-stopped depends_on: redis: condition: service_healthy networks: - dev-network profiles: - "tools" volumes: postgres_dev_data: driver: local labels: - "dev.portal.volume=database" redis_dev_data: driver: local labels: - "dev.portal.volume=cache" networks: dev-network: driver: bridge name: portal-dev-network labels: - "dev.portal.network=main"