version: "3.9" services: app: image: node:20-alpine working_dir: /usr/src/app command: sh -c "npm install && npm run dev" ports: - "3000:3000" env_file: - .env environment: - NODE_ENV=development - PORT=3000 - DATABASE_URL=postgres://${POSTGRES_USER:-botino}:${POSTGRES_PASSWORD:-botino}@db:5432/${POSTGRES_DB:-botino} - REDIS_URL=redis://redis:6379 volumes: - .:/usr/src/app - /usr/src/app/node_modules depends_on: db: condition: service_healthy redis: condition: service_healthy restart: unless-stopped db: image: postgres:16-alpine env_file: - .env environment: - POSTGRES_DB=${POSTGRES_DB:-botino} - POSTGRES_USER=${POSTGRES_USER:-botino} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-botino} ports: - "5432:5432" volumes: - db_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-botino}"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped volumes: db_data: redis_data: