services: app: build: context: . target: production restart: unless-stopped ports: - '${PORT:-3000}:3000' env_file: - .env depends_on: postgres: condition: service_healthy redis: condition: service_healthy healthcheck: test: ['CMD', 'node', '-e', "require('http').get('http://localhost:3000/health', r => process.exit(r.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))"] interval: 10s timeout: 5s retries: 5 start_period: 10s postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-seconectai} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-seconectai} POSTGRES_DB: ${POSTGRES_DB:-seconectai_vendas} ports: - '${POSTGRES_PORT:-5432}:5432' volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER:-seconectai} -d ${POSTGRES_DB:-seconectai_vendas}'] interval: 5s timeout: 5s retries: 10 redis: image: redis:7-alpine restart: unless-stopped ports: - '${REDIS_PORT:-6379}:6379' volumes: - redis_data:/data healthcheck: test: ['CMD', 'redis-cli', 'ping'] interval: 5s timeout: 5s retries: 10 volumes: postgres_data: redis_data: